uv pip install が「No virtual environment found」でインストールできない
No virtual environment found は、uv venv で .venv を作れば直る。
uv pip install は pip と違い、既定で仮想環境にしか入れない。
入れたものは uv run か .venv の python から使う。
公開: 更新:
要約
pip の代わりに uv を使おうとして uv pip install を実行すると、何もインストールされずに止まる(終了コード 2)。
error: No virtual environment found; run `uv venv` to create an environment, or pass `--system` to install into a non-virtual environment公式ドキュメント(新しいタブで開く)にあるとおり、uv は pip と違って既定で仮想環境を使うことを求める。uv pip install が入れる先として探すのは、VIRTUAL_ENV(有効化した仮想環境)、CONDA_PREFIX(有効化した Conda 環境)、カレントディレクトリか最も近い親ディレクトリの .venv の順で、どれも無ければこのエラーになる。
上の表示は uv 0.13.0・Python 3.12 で、空のディレクトリで uv pip install requests を実行したものだ。
解決策
1. uv venv で .venv を作る
uv venv
uv pip install requests有効化しなくても、uv はカレントか親ディレクトリの .venv に入れる。
サブディレクトリで実行しても Using Python 3.12.14 environment at: /w/a/.venv のように親の .venv が使われた。
2. 使うときは uv run か .venv の python で
.venv に入れた直後に素の python -c "import requests" を実行すると ModuleNotFoundError になった。.venv の python を使えば読み込める。
uv run python -c "import requests"
# または有効化してから使う
source .venv/bin/activate # Windows は .venv\Scripts\activate
python -c "import requests"3. Docker や CI では --system
使い捨てのコンテナや CI のように、システムの Python に直接入れてよい環境に限って --system を付ける。
uv pip install --system requestsOS が管理する Python に入れると、OS 側のパッケージと衝突することがある。
手元の開発環境では 1 の方法を使う。
4. 別の場所の環境を使う
.venv 以外の仮想環境なら、有効化して VIRTUAL_ENV を設定するか、--python でその環境を指定する。
よくある原因
.venvをまだ作っていない: 新しいディレクトリで最初にuv pip installを打っている。- システムの Python に入れるつもりでいる: pip ならそのまま入る場面でも、uv は
--systemを付けない限り仮想環境でない Python を無視する。 - 環境が探す場所の外にある:
.venv以外の名前や別のディレクトリに仮想環境を作り、有効化もしていない。 - 入れた後に素の
pythonで動かしている: エラーは消えても、.venvに入ったパッケージは素のpythonからは見えない。