🙌

pyenvとvenvのチートシート

2022/11/29に公開

きっかけ

私は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があると思うのでこれを利用。
ちゃんと書いてくれてることを前提とする。

  1. pyenvでpythonのバージョンを合わせて、切り替える
  2. 対象のリポジトリをgit cloneする
  3. プロジェクトフォルダに移動して、python3 -m venv .venvする
  4. .venvをactivateする
  5. pip install -r requirements.txtで必要なパッケージを丸ごとインストールする。

これで全く同じ環境を作ることが出来るのでパッケージ関連のエラーは置き得ない。
※requirements.txtがpip freezeで書き込まれていることを前提とします。

自分の環境を良い感じに共有したい時

  1. プロジェクトフォルダに移動
  2. 仮想環境をactiveにする
  3. 以下を実行
pip freeze > requirements.txt
  1. READMEに使い方をまとめてPUSHする。

Discussion