😎

「uv」と「pip install」は混ぜるな危険

に公開

詳しくは

https://zenn.dev/tabayashi/articles/52389e0d6c353a
この人がまとめてくれている

細かい話は、その時々で見たらいいが、
自分自身に向けて、とりあえず、これだけは、という注意事項だけ、書いた。

「uv」と「pip install」は混ぜるな危険

uvを使ったら、pipは使うな
pipを使ったら、uvは使うな
( 飲んだら、乗るな、乗るなら、飲むな みたいなもん )

「uv」は、

詳しいことは、知らん
お作法として、.venvが未だないとき、
uv syncだけやる
そしたら、.venvが自動で作られる。
.python-versionや、
pyproject.toml
( uv.lockがあればそれも)
の内容が適切ならば、
pythonの本体も含めて.venvの中にインストールされる

補足 その1
uv syncが.venvの中にインストールするpythonの本体のバージョンは、

.python-versionファイルがあれば、
.python-versionのファイルの中で書かれてるバージョンを優先的に使用する

.python-versionファイルがなければ、
pyproject.tomlの中の
requires-pythonに書かれたバージョンを使用する

補足 その2
uv以外の他のpythonの仮想環境は、あらかじめ
pythonの本体がある前提である
( pythonの本体がmiseでインストールしたものでもよい )

uv sync
で作られた.venvに対して、
source .venv/bin/activate
で、アクティベートしてから
which python
したら
なにがし/.venv/bin/python
のようなパスが表示される

uv sync 以外の
uv なにがし
は、
source .venv/bin/activate
で、アクティベートしてから行うのが、お作法。

「pip」は、

先に、仮想環境(uv以外の種類のです)を作った後に、
source .venv/bin/activate
で、その仮想環境をアクティベートしてから
pip install -r requirements.txt
である。

しかし、それで仮想環境の中にインストールできるのは周辺ライブラリ

pythonの本体は、元から準備されていることが前提( pythonの本体は、miseで準備でもよい )

まとめ「2パターン」考えられる

パターンその1

pythonの本体+周辺ライブりを、uv 一択で構築する

パターンその2

python本体を先にインストールしておく、miseを活用するのも便利
その後、該当フォルダで、pythonの仮想環境 ( uv以外の以前からあるもの )
で、仮想環境作ってから
source .venv/bin/activate
で、仮想環境をアクティベートして
その後、
pip install -r requirements.txt

Discussion