1.はじめに
Windows上でのPython開発における、細々としたことの覚え書きです。
2.開発環境構築
(1)Pythonインストール
(書き中)
| 最新のインストーラをダウンロードする。Welcome to Python.org | |
| インストールオプション | |
| インストールオプション | ![]() |
| インストール中 | ・・・ |
| インストール完了 | ![]() |
ターミナルを開いて実行
PS C:\Users\hoge\Desktop> py Python 3.13.2 (tags/v3.13.2:4f8bb39, Feb 4 2025, 15:23:48) [MSC v.1942 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> ^Z PS C:\Users\hoge\Desktop>
[Ctrl]-[Z]で終了します。
最後に、MicrosoftStoreアプリを開かないように、 設定を下記のとおり変更します。
「設定」→「アプリ」→「アプリの詳細設定」→「アプリ実行エイリアス」
| アプリインストーラー 「python」「python3」の両方をOFFにする | |
Pythonが見つからない場合に、ストアアプリのインストールに進まず、下記のエラーが出るようになります。
PS C:\Users\hoge\myproject> poetry run python3
'python3' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
(2)複数のPythonバージョンを切り替え
参考:https://python-beginner.blog/multiversion/
ターミナルを開く。
ここでは、フォルダC:\Applications\python以下に、
既にVer.3.10とVer.3.13がインストールされているものとする。
#現在のバージョンを確認 C:\Users\hoge>py -0p -V:3.13 * C:\Applications\python\Python313\python.exe -V:3.10 C:\Applications\Python\Python310\python.exe
複数バージョンのPythonがインストールされていても、 環境変数を定義し、特定のバージョンを指定することができます。
| 設定→システム→バージョン情報→システムの詳細設定を開く | |
| システムのプロパティ→環境変数を開く | |
環境変数PY_PYTHONを定義して、バージョン番号を記入 |
|
先ほどの環境変数を適用のため、ターミナルを閉じて、改めて開く。(VSCodeの場合は、VSCodeを開きなおす必要があります)
C:\Users\hoge>py -0p -V:3.13 C:\Applications\python\Python313\python.exe -V:3.10 * C:\Applications\Python\Python310\python.exe
(3)仮想環境の準備
#作業ディレクトリを準備 C:\Users\hoge>md myproject C:\Users\hoge>cd myproject #構築 C:\Users\hoge\myproject>py -m venv venv
最後の「venv」は任意の名前で構いません。 この表記の例が多いですので、差しさわりなければこのままで。
(4)作り直した仮想環境に、パッケージを復元
参考:https://note.nkmk.me/python-pip-install-requirements/
requirements.txtを使って、パッケージ情報を容易に移し替えられます。
#作り直す前の仮想環境の、パッケージ情報を書き出す C:\Users\hoge\myproject>py -m pip freeze > requirements.txt
#構築 C:\Users\hoge\myproject>py -m venv venv #作り直したあとの仮想環境に、パッケージ情報を読み込ませる C:\Users\hoge\myproject>py -m pip install -r requirements.txt
(5)pipのライブラリのアップデート
参考:https://zenn.dev/haretokidoki/articles/8836fecf6b4cfc
![]() |
VSCodeでrequirements.txtを開くと、pipパッケージの更新状況が分かります |
Client Challengeをインストールする
C:\Users\hoge\myproject>py -m pip install pip-review
# 更新可能なものを、一括アップデートする C:\Users\hoge\myproject>pip-review --auto #パッケージ情報を書き出す C:\Users\hoge\myproject>py -m pip freeze > requirements.txt
(6)Pythonのアップデート
| 最新のインストーラをダウンロードする。 Welcome to Python.org | |
| インストーラを起動して、「Upgrade Now」をクリックすると、既にインストール済のバージョンをアップデートしてくれます。 | |
ここでの例は、Ver.3.13系列なので、C:\Applications\python\Python313の内容がアップデートされます。 |
|
(7)poetryの活用
Windowsでpoetryを使いたいときの手順
インストール
- 参考資料
Windows版のPython3が、既にインストールされている状態とする。
> py --version
Python 3.13.2
ターミナルから下記のコマンドを実行する。
> (Invoke-WebRequest -Uri https://install.python-poetry.org -UseBasicParsing).Content | py - Retrieving Poetry metadata # Welcome to Poetry! This will download and install the latest version of Poetry, a dependency and package manager for Python. It will add the `poetry` command to Poetry's bin directory, located at: C:\Users\xxx\AppData\Roaming\Python\Scripts\bin You can uninstall at any time by executing this script with the --uninstall option, and these changes will be reverted. Installing Poetry (2.1.1) Installing Poetry (2.1.1): Creating environment Installing Poetry (2.1.1): Installing Poetry Installing Poetry (2.1.1): Creating script Installing Poetry (2.1.1): Done Poetry (2.1.1) is installed now. Great! ・・・
インストールしたpoetryコマンドを実行できるように、 Windowsの設定・システムのうち、 環境変数・ユーザー環境変数PATHに、下記の記述を追加する。
%APPDATA%\Python\Scripts
|
|
ターミナルからpoetryコマンドを実行すると、Usageが表示されます。

新規にプロジェクトを作ります。
--srcオプションを付けることで、SRCレイアウトでプロジェクトが作られます。
> poetry new --src MyProj # 内容を確認 > cd MyProj > ls Mode LastWriteTime Length Name ---- ------------- ------ ---- d----- 2025/02/20 11:01 src d----- 2025/02/20 11:01 tests ------ 2025/02/20 11:01 0 README.md ------ 2025/02/20 11:01 338 pyproject.toml # virtualenv のフォルダをプロジェクトのディレクトリの中に作る # (指定無しの時は AppData\Local\Pythonの下にプロジェクト毎に作られます) > poetry config --local virtualenvs.in-project true > poetry install > poetry add <pkg name> # この操作のあとにvirtualenv のフォルダが作られる
[Ctrl]-[Shift]-[P]


Usage
- 参考
(8)uvの活用
Windowsでuvを使いたいときの手順
インストール
- 参考資料
Windows版のPython3が、既にインストールされている状態とする。
> py --version
Python 3.13.2
ターミナルから下記のコマンドを実行する。
> powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex" Downloading uv 0.6.2 (x86_64-pc-windows-msvc) Installing to C:\Users\hoge\.local\bin uv.exe uvx.exe everything's installed! To add C:\Users\hoge\.local\bin to your PATH, either restart your shell or run: set Path=C:\Users\hoge\.local\bin;%Path% (cmd) $env:Path = "C:\Users\hoge\.local\bin;$env:Path" (powershell)
もし下記の様なエラーが出た場合
iex : 用語 'iex' は、コマンドレット、関数、スクリプト ファイル、または操作可能なプログラムの名前として認識されません。 名前が正しく記述されていることを確認し、パスが含まれている場合はそのパスが正しいことを確認してから、再試行してください 。
このときは、iexコマンドのところを、Invoke-Expressionコマンドに置き換えます。
> powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | Invoke-Expression"
インストールの際に、
Windowsの設定・システム・環境変数・ユーザー環境変数PATHにもuvの実行パス(%USERPROFILE%\.local\bin)が追加されている。

インストール後、ターミナルを開き直して環境変数PATHの変更を反映し、バージョン確認
PS > uv --version uv 0.6.2 (6d3614eec 2025-02-19)
Usage
プロジェクトを作成
# カレントフォルダの一つ下に、プロジェクトのフォルダも一緒に作る場合 > uv init my-project # プロジェクトフォルダに、srcディレクトリも作った状態で作成するとき > uv init my-project --lib > cd my-project # すでに空っぽの作っていて、そこにプロジェクトを作る場合 > uv init --app # プロジェクトの内容確認 > ls Mode LastWriteTime Length Name ---- ------------- ------ ---- -a---- 2025/02/23 0:42 109 .gitignore -a---- 2025/02/23 0:42 5 .python-version -a---- 2025/02/23 0:42 84 main.py -a---- 2025/02/23 0:42 152 pyproject.toml -a---- 2025/02/23 0:42 0 README.md # パッケージ追加 > uv add pytest ruff mypy # 実行 > uv run main.py Hello from my-project! # my-project\__main__.py をモジュール実行 > uv run -m my-project Hello from my-project MODULE! # パッケージのアップデート > uv lock --upgrade Resolved 62 packages in 766ms # 仮想環境を削除 > Remove-Item -Recurse -Force .venv # 仮想環境を作り直す > uv sync # uvのキャッシュを削除 > uv cache clean Clearing cache at: C:\Users\hoge\AppData\Local\uv\cache Removed 24936 files (1.3GiB)

(9)その他テクニック
- Docker
- 仮想環境
- プロジェクト
3.開発手法
(1)traceback出力の文字をカラーにする
- GitHub - staticshock/colored-traceback.py: Automatically color Python's uncaught exception tracebacks
- python - Is it possible to print `traceback.format_exc()` in color using colored-traceback.py - Stack Overflow
(2)ソースのヘッダーの書き方
- Python File Header | Delft Stack
What is the common header format of Python files? - GeeksforGeeks
READMEの書き方
(9)その他テクニック
- 並行処理
- その他
4.streamlit
(1)uvを使う
# プロジェクトの準備 > uv init trystreamlit > cd trystreamlit # パッケージの追加 # 最後のオプションは、streamlitやhttpxインストール時にハードリンクを作ろうととしてエラーで止まるのを抑制するため > uv add streamlit httpx pytest ruff --link-mode=copy # 実行 > uv run streamlit run ./main.py # ブラウザを開かずに実行 > uv run streamlit run ./main.py --server.headless true
(2)poetryを使う
# プロジェクトの準備 > poetry new myproject > cd myproject # パッケージの追加 > poetry add streamlit pytest # 実行 > poetry run streamlit run baconsole/__main__.py # ブラウザを開かずに実行 > poetry run streamlit run baconsole/__main__.py --server.headless true
- 参考
(3)VSCodeのデバッガー連携
参考:https://ploomber.io/blog/streamlit-debugging/
.vscode\launch.jsonに下記の設定を追記する。
- ポイント・下記の記入を忘れないこと
"module": "streamlit","justMyCode": false,
{ // IntelliSense を使用して利用可能な属性を学べます。 // 既存の属性の説明をホバーして表示します。 // 詳細情報は次を確認してください: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ { "name": "Python デバッガー: 現在のファイル", ・・・(省略)・・・ }, { "name": "streamlit デバッガー: 現在のファイル", "type": "debugpy", "request": "launch", "module": "streamlit", "console": "integratedTerminal", "justMyCode": false, "args": [ "run", "${file}", ] } ] }
実行とデバッグのメニューに、「streamlit デバッガー」が追加されていますので、こちらを実行します。

(3)VSCodeのデバッグ実行でブラウザを開かせないようにする
参考:Supress new browser window once app is started execution - Using Streamlit - Streamlit
コンフィグファイルに指定
.streamlit\config.toml
[server] headless = true
実行時引数に指定
.vscode\launch.jsonに--server.headlessを追記する。
{ ・・・(省略)・・・ }, { "name": "streamlit デバッガー: 現在のファイル", "type": "debugpy", "request": "launch", "module": "streamlit", "console": "integratedTerminal", "justMyCode": false, "args": [ "run", "${file}", "--server.headless", "true" ] } ] }
(9)コーディングテクニック
- PythonだけでWebアプリが作れるライブラリが増えている(2024.05) #Webアプリケーション - Qiita
- Streamlit設計方針: 効果的なアプリケーションの構築を考える
- 画面デザイン
- 並列処理
- Python multiprocessing vs threading vs asyncio - JX通信社エンジニアブログ
- Pythonにおける並列処理: multiprocessingとconcurrent.futuresの活用法 #Python - Qiita
- python - How to call a async function contained in a class? - Stack Overflow
- その並列処理待った! 「Python 並列処理」でググったあなたに捧ぐasync, threading, multiprocessingのざっくりとした説明 #Python - Qiita
- Streamlit で threading や multiprocessing を使った非同期処理を行う
- (セッションを超えた共有)[Web] Streamlitのupdateの確認
- https://zenn.dev/plhr7/articles/201572f26721ac
- PythonのQueue(キュー)の使い方とは?現役エンジニアが徹底解説 | デジタルトレンドナビ
- PyInstaller
5.fastapi
(1)uvを使う
# プロジェクトの準備 > uv init tryfastapi > cd tryfastapi # パッケージの追加 > uv add fastapi uvicorn pytest
(2)vscodeからuvicornを起動
.vscode\launch.json
{ "version": "0.2.0", "configurations": [ { "name": "Python デバッガー: 現在のファイル", "type": "debugpy", "request": "launch", "program": "${file}", "console": "integratedTerminal" }, { "name": "RUN uvicorn", "type": "debugpy", "request": "launch", "module": "uvicorn", "args": ["main:app", "--reload"], "console": "integratedTerminal" } ] }












