Heavy Watal

pip — パッケージ管理

古いPythonではパッケージ管理のためにツールを別途インストールする必要があった。 Python 3.4 以降では venvensurepip が標準ライブラリに入って少しマシに。

Python本体のインストールに加えて pipvenv の仕事まで超高速に実行できるRust製ツール uv が普及し、 生の pipvenv を直接使う機会は無くなりつつある。 /python/install#uv の項を参照。

科学技術系の利用だけなら、Python本体のインストールからパッケージ管理までぜーんぶ Anaconda に任せるのが楽ちんらしい。 その場合 pip を混ぜて使ってはいけないので、本記事はほぼ無用。 ただし、環境を汚したりAnaconda特有の不具合が出たりするので私は使わないしオススメもしない。

pip

https://pip.pypa.io/

PyPI からの簡単にパッケージをインストールできるようにするツール。 アンインストール機能の無い easy_install に取って代わった。 Python 3.4以降では標準ライブラリの ensurepip によって自動的にインストールされる。 今は uv pip を使うのが速い。

Python 3.12以降では PEP 668 が有効となり、 仮想環境の外でグローバルに pip install しようとすると多くの場合 error: externally-managed-environment と怒られる。 後述のvenvで仮想環境を作り、その中でpipを実行する。

venv

https://docs.python.org/3/library/venv.html

Python実行環境を仮想化するパッケージ。 これで作った仮想環境内で pip を使ってパッケージ管理する。 Python 3.3 以降では venv が標準ライブラリ入りしたので virtualenv の個別インストールは不要になった。 今は uv venv を使うのが速い。

仮想環境を作る:

uv venv [OPTIONS] ~/.virtualenvs/myproject

仮想環境に入る、仮想環境から出る:

source  ~/.virtualenvs/myproject/bin/activate
deactivate

activate により PATH, PS1, PYTHONHOME, VIRTUAL_ENV が設定・変更され、 deactivate でそれらは復元される。 activate するときまでの値が保持・復元されるということに注意。

仮想環境の置き場所はどこでもいいけど、 各プロジェクトのトップに .venv を作って .venv/bin/activate するのがモダン。 プロジェクトの外にまとめる場合は慣習に従って ~/.venvs/ とか ~/.virtualenvs/ の下に置けば各種ツールに見つけてもらいやすい。 例えば vscode-python, reticulate, etc. さらにそこを WORKON_HOME という環境変数に入れておけばより安心。

PEP 668 を無視してグローバルにパッケージをインストールしたい場合、 --break-system-packages というオプションで突破することもできるが、 グローバルっぽい仮想環境を作るほうがマイルドで安全。 例えば次のようにシェルを設定して uv venv ${VIRTUAL_ENV} のように仮想環境を作ってPATHを通すとか:

UV_PYTHON=3.14
export WORKON_HOME="${HOME}/.virtualenvs"
if [ -d "${VIRTUAL_ENV:=${WORKON_HOME}/${UV_PYTHON}}" ]; then
  export VIRTUAL_ENV
  PATH=${VIRTUAL_ENV}/bin:$PATH
fi

これで擬似的に activate したような格好になる。

setuptools

https://github.com/pypa/setuptools

パッケージ管理・作成の基本となるライブラリ。 コマンドラインツール easy_install はこれの一部として含まれているが、直接使うことはない。 (pip を使う)

See also “Pythonパッケージ作成”

setuptools の改良版としてしばらく distribute も利用されていたが、 その成果が setuptools にマージされたので忘れていい。