Heavy Watal

pip — パッケージ管理

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

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

pip

https://pip.pypa.io/

PyPI からの簡単にパッケージをインストールできるようにするツール。 アンインストール機能の無い easy_install に取って代わり、 現在では公式に推奨されている。 Python 3.4以降では標準ライブラリの ensurepip によって自動的にインストールされる。

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

venv

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

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

仮想環境を作る:

python3 -m venv [OPTIONS] ~/.virtualenvs/myproject

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

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

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

VIRTUAL_ENV_DISABLE_PROMPT=1 を設定しておけばプロンプト左端に (venv) を追加させないようにできる。

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

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

export WORKON_HOME="${HOME}/.virtualenvs"
PATH=${WORKON_HOME}/global/bin:$PATH

uv

pipやvenvに相当することを超高速に実行できるrust製ツール。 おまけにPython本体のインストールもできる。

/python/install#uv の項を参照。

setuptools

https://github.com/pypa/setuptools

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

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

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