pip — パッケージ管理
古いPythonではパッケージ管理のためにツールを別途インストールする必要があった。
Python 3.4 以降では venv
と ensurepip
が標準ライブラリに入って少しマシに。
科学技術系の利用だけなら、Python本体のインストールからパッケージ管理までぜーんぶ
Anaconda に任せるのが楽ちんらしい。
その場合 pip
を混ぜて使ってはいけないので、本記事はほぼ無用。
ただし、環境を汚したりAnaconda特有の不具合が出たりするので私は使わないしオススメもしない。
pip
PyPI
からの簡単にパッケージをインストールできるようにするツール。
アンインストール機能の無い easy_install
に取って代わり、
現在では公式に推奨されている。
Python 3.4以降では標準ライブラリの
ensurepip
によって自動的にインストールされる。
Python 3.12以降では PEP 668 が有効となり、
仮想環境の外でグローバルに pip3 install
しようとすると多くの場合
error: externally-managed-environment
と怒られる。
後述のvenv
で仮想環境を作り、その中でpipを実行する。
-
全体のヘルプ、コマンド毎の詳細ヘルプ:
pip3 help pip3 install --help
-
よく使うコマンド:
pip3 list --outdated pip3 install -U pip pip3 search jupyter
-
設定ファイルは
~/.config/pip/pip.conf
と公式には書いてあるが~/.config/python/pip.conf
でも認識される:[list] format = columns
-
全パッケージをバージョンまでそっくり引き継ぐには:
pip3 freeze >requirements.txt pip3 install -r requirements.txt
-
手動インストール:
python3 -m ensurepip
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
にマージされたので忘れていい。