🙌
pyenvとvenvのチートシート
きっかけ
私はPythonのバージョン管理をpyenvとvenvで行っているのだが、新しい環境を作るたびに方法をググるのが疲れたのでまとめたくなった。
pyenv
pyenvの役割
主にpythonのバージョンを管理する
主な使い方
インストールできる環境の確認
pyenv install --list
新しい環境のインストール
pyenv install [pythonのバージョン]
例:pyenv install 3.11.0
インストール済みの環境の確認
pyenv versions
バージョンの切り替え
pyenv global 3.6.1
venv
venvの役割
パッケージを管理する
使い方
pyenvでほしいPythonのバージョンにセットしておく
python -V
で確認可能
新しい環境の作成
python3 -m venv [newenvname]
注意点:
- 一時的な環境ならnewenvname=venvとして、プロジェクトフォルダでコマンドを実行する。
- 長期的に使う環境ならばいい感じの名前を付けてホームディレクトリで実行。この場合newenvnameの先頭にドット「.」を付けて隠しフォルダとして扱うのがおすすめ
Activate
当方の環境がLinuxなのでそれに合わせる。Macも可
fish
source [newenvname]/bin/activate.fish
bash, zsh
source [newenvname]/bin/activate
結構コマンドが長いので良く使うものはaliasで登録しておこう。
deactivate
deactivate
環境の削除
環境を作成したときに[newenvname]というディレクトリが作られるので、このディレクトリを削除すればよい。Linux系なら以下を[newenvname]のあるフォルダでを実行すればよい。
rm -rf [newenvname]
補足
最後に良くやる流れをまとめておく。
他人の環境に合わせたい時
多分githubのREADMEにrequirementsがあると思うのでこれを利用。
ちゃんと書いてくれてることを前提とする。
- pyenvでpythonのバージョンを合わせて、切り替える
- 対象のリポジトリをgit cloneする
- プロジェクトフォルダに移動して、
python3 -m venv .venv
する - .venvをactivateする
-
pip install -r requirements.txt
で必要なパッケージを丸ごとインストールする。
これで全く同じ環境を作ることが出来るのでパッケージ関連のエラーは置き得ない。
※requirements.txtがpip freezeで書き込まれていることを前提とします。
自分の環境を良い感じに共有したい時
- プロジェクトフォルダに移動
- 仮想環境をactiveにする
- 以下を実行
pip freeze > requirements.txt
- READMEに使い方をまとめてPUSHする。
Discussion