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 にマージされたので忘れていい。