WindowsでのオススメのPython環境 2026版

2026-01-19(月)

Python環境をuvにする

利点としては以下が挙げられる

  • pyenv不要で複数バージョンのPythonがシステムに同居できる
  • これまではpyenvによるアクロバチックな切り替えが必要(mac, Linux),各バージョンのインストールは自前でpy.exeでがんばる(Windows)
  • 複数バージョンのPythonおよび,パッケージがプロジェクト間で重複してもディスク占有容量が増えない
  • 仮想環境の数だけGBオーダーでディスクが圧迫される
  • uvx --with xxxの機構で仮想環境を作らずにpythonスクリプト(.pyだけでなくipythonのようなインタプリタやjupyterlabも)が実行できる
  • 特にLLM関係はuvxで書かれた実行サンプルが多い
  • uv add(pyproject.toml, uv.lock)でのパッケージ管理の方がpipやcondaより圧倒的に速く賢い
  • 開発環境のシェアが楽
  • pipでのインストール順を守らないと入らないような問題が起きにくい

ネガティブな点としては

  • なんでもuv経由なのでpython的に気持ち悪い
  • 「pythonなんだけどuvコマンド」をどう説明するか悩む

1. インストール

uvについては配布元に記載されているスクリプトによるインストールが,自身のアップデートにも対応できるのでオススメ.

Windowsの場合はコマンドプロンプトまたはPowerShellで下記を実行

powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

MacやLinuxの場合

curl -LsSf https://astral.sh/uv/install.sh | sh

で,WindowsやMac, Linuxで一旦そのウィンドウを閉じて再度開くとuvがパスに入った状態になる.

uvは感覚としてはPython Launcherのpy.exeに近いようなもんだが,より実体が隠蔽された形式になりpython本体もuvを経由して起動することになる.

例えば

uv run python

という感じで実行すると勝手に最新版のPythonをダウンロードしてインタプリタが開く.バージョンを指定したい場合は

uv run --python 3.12 python

のようにオプションで指定する.

2. プロジェクトの作成とパッケージ管理

uvでの開発についてはフォルダが単位となるプロジェクトとして扱う.従来のvenvみたいなもんだが,uvが実体を一括管理してくれて各プロジェクトにはHardLinkやRefLinkやBlockClone等でディスク容量を圧迫しない仕組みになっている.

例えばPython 3.12のプロジェクト pj1 を作る場合

mkdir pj1
cd pj1
uv python pin 3.12
uv init

でpyproject.tomlが作られ,3.12に固定される.パッケージの追加はuv addで行う.pipは使わない.

uv add numpy

とか

uv add "numpy>2.0"

とか,pip installuv addに置き換えたと考えればよい. 依存関係はpyproject.tomlに保存され,実際に入ったパッケージの情報がOSに依存しないような方法でuv.lockに保存される.

3. プロジェクト内での実行

スクリプトの実行

hello.pyを実行したい場合

uv run hello.py

ipython, python, jupyterlabの実行

uv run ipython
uv run python
uv run jupyter lab

みたいな感じでインストールされるスクリプトもuv runできる

4. プロジェクトに特定パッケージをインストールさせずに実行

  • --with package付きでuv run
  • uvx scriptnameで実行(ipythonとかスクリプトが同時にインストールされるタイプのものでwithを省略できる)

--withは現プロジェクトでとりあえず任意のパッケージを追加して実行してみたい場合に有効で,そのパッケージ以外はプロジェクトが使われる.

uvx を使えば環境を汚さずに実行できる.これはuvx scriptnameが実行されたときに暗黙で--with scriptnameを指定する挙動になるため,重複しないコマンドが書ける.パッケージ名とスクリプト名が一致しない場合は--fromを書く.

ということで,uvxはお作法としてipythonとかuv addしたときに実行形式ファイルも一緒に入るタイプのものの実行に使う.ただしpythonのバージョンは指定しないと

  • --pythonで指定したバージョン
  • 環境変数
  • 過去にpinしたバージョン
  • uvで使っているPythonの中で最新のもの
  • システムのPython

の順で決まるらしい.

インタプリタにワンライナーで命令を食わせる場合

uv run --python 3.12 --with numpy --with libsvm-official python -c "from libsvm.svmutil import *; y, x = [1,-1], [{1:1, 3:1}, {1:-1,3:-1}]; prob  = svm_problem(y, x); param = svm_parameter('-t 0 -c 4 -b 1'); m = svm_train(prob, param)"

numpy入りのipythonを後腐れ無く使う場合

uvx --with numpy ipython

open3d入りのmarimoを後腐れなく使う場合

uvx --python 3.12 --with open3d  marimo new

uvxで実行スクリプトとパッケージ名が異なる場合

uvx --from httpie http https://google.com

Ultralytics yoloで推論する

Macなので device=mps と書いてるが他は削るかcuda使う

uvx --from ultralytics yolo predict model=yolo26n.pt source=0 show=True device=mps

ファイルサーバを立てたい場合

uvx updog

5. プロジェクトの開発環境の複製

プロジェクト用のフォルダを作り,フォルダ内に別のプロジェクトで生成されたpyproject.tomlとuv.lockを置いて使いたいバージョンでpinしてからuv syncするだけ.例えば上のpj1で作った2ファイルを用意して

cd ..
mkdir pj2
cd pj2
uv python pin 3.12

で,何らかの手段でファイルをpj2にコピーしてから

uv sync

で同じ環境を作ってくれる.condaみたいにos依存のゴミも入らないのでプラットフォームに依存しない.

6. venvで作った仮想環境の移行

とりあえず捨てる前の仮想環境でactivateしておいて

pip freeze > requirements.txt

で使ってるパッケージのバージョン入り一覧が保存できるのでdeactivateして仮想環境のフォルダごと消して良い(パッチ当ててるときは当然その差分も取っておく)

pipの継ぎ足しソースのような状態だと大抵の場合バージョン衝突が起きるので,バージョンをとっぱらって入れてしまうのが早い.クリティカルな問題がある場合は特定パッケージだけ後で指定すれば直してくれる.

Windowsの場合コマンドプロンプトから

powershell -Command "Get-Content requirements.txt | % { uv add ($_ -split '=')[0] }"

Mac やLinuxは

cut -d'=' -f1 requirements.txt | xargs uv add

ただ,pipでインストール順のお陰で奇跡的に動く組合せも存在し,コケることも多々あるので,pythonのバージョンに対して明らかに古いパッケージは外した方が良い.(横着せずにひとつずつuv addすると確実)

7. クラウドストレージとの相性

uvはUV_CACHE_DIRに実体を置いてハードリンクで仮想環境の容量増加を防いでくれるが,クラウドストレージとの相性を考えるとイマイチ. プロジェクトを作ると.venvを作ってしまうのが問題となるが回避策はある.

  • Dropbox: .venvフォルダに属性付与して無視させるのは可能.ただし無視させる命令より前に処理が始まるし,空のフォルダは残る
  • Box: 無視させる機構は無し

一番無難な解決法はクラウドストレージがシンボリックリンクを解釈できないことを利用して,予め.venvというシンボリックリンクをクラウドストレージ外に設定すること.ただし,各PC環境でリンク設定が必要.Windowsの場合でもmklinkかPowerShellなら

New-Item -ItemType Junction -Path ".venv" -Target "$Home\uv_envs\PJA"

のようにディレクトリジャンクションを使うとよい.

Category: Memo Tagged: Python Windows uv


Apple Silicon MacでWindowsアプリを使う

2026-01-19(月)

※KegworksからSikarugirになってた

WindowsアプリをMacでVMを通さずに使うにはPlayOnMacとかHomebrewからのCrossover Wineとかあるようだが,Kegworksが使いやすかった。で,今度はSikarugirへ。

Sikarugirは単一の互換システムにアプリケーションをぶら下げるのではなく,Windowsアプリケーションごとに.appを作成する(.appフォルダはmacOSから見たアプリケーション本体)。(Wrapperと呼ぶ) デメリットは容量を食うところ。共通のWindowsリソースは一応共有しているが,WrapperごとにWine Engineを任意のバージョンから選べるようにした仕組みのためWine関係のファイルについては独立して.app内に置かれている。 容量としては1アプリあたり1GB+そのアプリのフ …

Category: Memo Tagged: Windows Apple Silicon mac Micro-CAP LTspice Wine Sikarugir

Read More

Google Cloud Shellの日本語化(gcc+デバッグ込み) 2025版

2025-07-30(水)

Webブラウザ上でコーディングとshellによる操作が可能なCloud Shell Editorがとても便利。 ただし50時間/週の制限がある。

三の字のアイコンからTerminal->new terminalでターミナルを開く。

機能的にはエディタはVS Codeの拡張機能組込み版みたいな感じで,Shellの方はUbuntu 24.04が動いている。

$ cat …

Category: Memo Tagged: C Lecture Debian gcc

Read More

WindowsでのオススメのPython環境 2024版

2024-06-05(水)

普通にPython.orgからダウンロードして入れましょうという話。

これまでオススメのPython環境はAnacondaだったもののNavigatorでトラブルが発生するとかなり面倒だったり,condaがいつまでたっても依存関係を解決してくれなかったりとイマイチな状況が増えてきたのと,結局のところpip使わないで済むことは無いのでcondaではなくpipで統一してしまった方が楽だというのが動機でpy.exeの存在が決 …

Category: Memo Tagged: Python Windows

Read More

Google Cloud Shellの日本語化(gcc込み) 2024版

2024-06-05(水)

Webブラウザ上でコーディングとshellによる操作が可能なCloud Shell Editorがとても便利。 ただし50時間/週の制限がある。

三の字のアイコンからTerminal->new terminalでターミナルを開く。

機能的にはエディタはVS Codeの拡張機能組込み版みたいな感じで,Shellの方はUbuntu 22.04が動いている。

$ cat …

Category: Memo Tagged: C Lecture Debian gcc

Read More

Windows+WSL2でGithubで配布されてるものを試す環境構築

2023-06-21(水)

※この情報は古いです。wikiの方にまとめました

1. WSL2のインストール

Microsoftのサイトの説明に従いWSL2を入れる。

PowerShellを管理者権限で起動して

wsl --install

ここでWSLは既に入っていてディストリビューションがどうこうと出てきたら ```PowerShell! wsl --install -d Ubuntu

としてUbuntuを入れる

```bash
Ubuntu は既にインストー …

Category: Memo Tagged: Python Ubuntu WSL2 Github

Read More

Windows環境でGitとvenvを使ってみる

2023-05-25(木)

前回のWindowsでのPython環境構築をやった続き。

やること

  • gitコマンドを使ってGitHubからソースを持ってくる
  • venvで専用の環境を作って動かす

Gitについて雑な説明

Gitは何かしらのプロジェクトで作成したプログラムのソース(とデータ)を管理するツールで,GitHubはGitに対応したサーバーを提供するサービス。程度の認識でよい。プログラムを作ってる …

Category: Memo Tagged: Python Windows

Read More

WindowsでのオススメのPython環境

2023-05-21(日)

普通にPython.orgからダウンロードして入れましょうという話。

これまでオススメのPython環境はAnacondaだったもののNavigatorでトラブルが発生するとかなり面倒だったり,condaがいつまでたっても依存関係を解決してくれなかったりとイマイチな状況が増えてきたのと,結局のところpip使わないで済むことは無いのでcondaではなくpipで統一してしまった方が楽だというのが動機でpy.exeの存在が決 …

Category: Memo Tagged: Python Windows

Read More
Page 1 of 4

Next »