pyenvの仮想環境をGitで管理する方法
結論
- Gitに含めるもの: .python-version, requirements.txt
- Gitに含めないもの: 仮想環境そのもの
補足
.python-version
- 仮想環境名やPythonバージョンを記録したファイル。
- 他の開発者が同じリポジトリをクローンしたとき、このファイルに基づいて自動的に環境を切り替えられる。
requirements.txt
- 仮想環境でインストールされたパッケージの依存関係を記録したファイル。
- 他の開発者が仮想環境を再現するために必要。
仮想環境そのものはGit管理しない
- pyenvによる仮想環境は多数のファイルを含むため、Gitで追跡するとリポジトリが肥大化します。
- 仮想環境を直接共有する代わりに、環境再現に必要な情報(Pythonバージョンやパッケージ一覧)をコードとして管理することで、他の開発者が容易に同じ環境を構築できます。
基本的な手順
1. 仮想環境を作成する
指定したPythonバージョンで仮想環境を作成します。
pyenv virtualenv <Pythonのバージョン> <環境名>
2. プロジェクトディレクトリへ仮想環境を適用する
プロジェクトディレクトリで以下を実行し、.python-versionファイルを生成します。
pyenv local myproject-env
.python-versionはGitで管理することで、他の開発者が同リポジトリをクローンした際に、pyenv localを通じて同じ仮想環境を再現しやすくなります。
3.依存パッケージを管理する
pip install パッケージ名
※pyenvは、virtualenvやvenvのように仮想環境名をプロンプトに自動で追加しません。そのため、仮想環境が切り替わっていても、プロンプトが変化しません。
4.依存関係を記録
プロジェクトに必要なパッケージを記録します。
pip freeze > requirements.txt
5. ".python-version" と "requirements.txt" をGitに追加
git add .python-version requirements.txt
git commit -m "Add pyenv configuration and dependencies"
仮想環境を復元する方法
クローンしたディレクトリで以下を実行してください。
#仮想環境の作成
pyenv virtualenv <Pythonのバージョン> <仮想環境名>
#プロジェクトディレクトリに仮想環境絵を指定
pyenv local <仮想環境名>
#依存パッケージのインストール
pip install -r requirements.tx