Python の ◯◯管理
いろいろあって分からん。
環境汚すのが怖くて本のサンプルを試してみるのが億劫になる。
役割まとめ
| 管理の対象 → | 環境全体への影響 | Python 自体の バージョン | パッケージの バージョン固定 | パッケージ 依存関係の解決 | メモ |
|---|---|---|---|---|---|
| venv | ◯ (ほぼなし) | - (作成元に依存) | △ (requirements.txt等で固定) | - | 標準の機能 |
| pip | △ (venv外だと汚す) | - | ◯ | ◯ | 標準の機能 |
| pyenv | △ (globalだと汚す) | ◯ | - | - | OS 標準の Python を使いたくないときだけ使う |
| conda | △ (base自動ONだと汚す) | ◯ | ◯ | ◯ | numpy, pandas, matplotlib 等、数値計算で好んで使われる |
- 「汚す」は具体的に言うと、「PATH 環境変数が書き換わって、python, pip が想定と違うものを指す」か
個人的方針
全体
- 普段の環境の分離には venv, pip を使う
- 書籍などのサンプルで使う場合は conda を使用する (numpy, pandas, matplotlib, jupyter と相性が良いという理解)
- pyenv は、個人的には使用しない
- poetry?, uv?, docker? → いまは見ない!知らないことにする
という方針にしてみよう。
venv
- venv の activate は必要なときに実施(.bash_profileなどで activateしない)と運用すると分離の利点が生きる
- 慣れるまで面倒そう
- よく呼ぶケースはシェルスクリプトなどの wrapper から呼ぼう
conda
パッケージに種類がある
- anaconda : numpy, pandas, matplotlib など全部入り
- miniconda : conda 本体のみ
venv のように環境を分離して使う意味あいでは、
- miniconda を使用する
- .bash_profile などには書かない(auto_activate_base 無効にする)
とやれば、環境を汚さずに済みそうだ
bash
conda config --set auto_activate_base false
以下広告