始めに
Python仮想環境の構築に当たっての備忘録です.
往々にして,プロジェクト毎に異なるバージョンのPythonを使わなければならない状況に遭遇します.例えば,プロジェクトAではパッケージX(Python 3.5 < ver < 3.7を要求)を使うが,プロジェクトBではパッケージY(Python 3.9 < verを要求)が必要,など.あるいは,Pythonのバージョンは同一でも良いがパッケージ毎のコンフリクトが発生することもあります.
このような状況では,各プロジェクト用の仮想環境を作ることで対応することができます.
以下は,主にこちらの記事を参考に,同記事に則した内容です.
追記(2023/02/01):こちらの記事も参考になります.
環境
Microsoft Windows 10
MacOS,Linux,Ubuntuをご利用の場合は別記事をご覧ください.また,AnacondaやDockerも本記事の対象とはしていません.ここではpyenvとvenvを使う方法を記します.
(2022/10/21追記: MacOS,Ubuntuでの仮想環境のアクティベートに関して)
pyenv
Pythonのバージョンを管理してくれます.複数のPythonバージョンを切り替えて使えるので,上記のような状態で重宝しますね.
pyenv(pyenv-win)のインストール
pyenvは,WSL (Windows Subsystem for Linux) を除くWindows環境では動作しません.したがって,pyenv-winを利用します.公式からは幾つかの方法が示されていて,
- pipを使う
- zip fileを経由する
- Gitを使う
- Chocolateyを使う
が選択肢として提供されています.ここはお好みでどうぞ.
Pythonのインストール
まず,pyenvを使ってインストール可能なPythonバージョンを確認します.
$ pyenv install -l
とすると,
...
3.8.0-win32
3.8.0
3.8.1rc1-win32
3.8.1rc1
3.8.1-win32
3.8.1
3.8.2-win32
3.8.2
3.9.0-win32
3.9.0
...
として,インストール可能なPythonが出てきます.この中から好きなPythonバージョンを選んでインストールしましょう.例えば,3.8.10
が欲しいなら,
$ pyenv install 3.8.10
です.
Pythonをインストールできたら
まず,Pythonのバージョンを確認しましょう.
$ python -V
として,
Python 3.8.10
などが返されれば良し.
また,
$ pyenv version
と打てば,
3.8.10 ($user/.pyenv/pyenv-win/version)
と返されるので,ちゃんとpyenv(今回はpyenv-win)が用意してくれたPythonが使えていますね!その他諸々のコマンドはpyenv
と打てば表示されます!
venv
ライブラリやパッケージ,モジュールなどを管理してくれます.Python 2系ではvirtualenvという名前で,これ自体をインストールする必要があるそうですが,3系(厳密には3.3
以降)では標準搭載されています.
virtualenvのインストール(Python 2系 / 必要な場合)
$ pip install virtualenv
良し.
仮想環境の構築
プロジェクト毎に異なる仮想環境を作るのが自然な気がしますので,
$ cd [path_to_project_directory]
などとして,[project_directory]へ移動しておきましょう.さて,仮想環境の構築ですが,
$ python -m venv [virtual_environment_name]
で作成できます.
仮想環境名は,.venv
とすることが慣例のようですが,お好みでどうぞ.僕は基本的に,その仮想環境を特徴付ける要素・名前を付け足します(.venv_sklearn
/ .venv_tf
/ .venv_torch
/ .venv_playground
など).
仮想環境のアクティベート
作ったら使う,作ったのは使うため.仮想環境をアクティベートします.
$ . [virtual_environment_name]/Scripts/activate
でアクティブ状態になります(MacOS, Ubuntuでは$ . [virtual_environment_name]/bin/activate
).アクティブになると,ターミナルの先頭に
([virtual_environment_name]) $
という表示がくっつくので,環境名が表示されている間はアクティブです.仮想環境にパッケージをインストールするには,アクティベートした状態で,
([virtual_environment_name]) $ pip install [package_name]
です.これでローカル環境の汚染を心配せずに遊べます.また,当該環境での作業が終わり,ディアクティベートする場合には,
([virtual_environment_name]) $ deactivate
のみ.シンプルですね(MacOS, Ubuntuでも同様).
requirements.txtの書き出し・読み込み
環境構築はとても面倒になったりします.GitHubなどを通してコードを公開するときは,ユーザが環境構築に手間取らないように環境に入っているライブラリやパッケージを全て記したrequirements.txt
を用意しておくと親切です.requirements.txt
を作成するには,アクティブ状態で,
([virtual_environment_name]) $ pip freeze > requirements.txt
とすると,同じ階層にrequirements.txt
ができます.これをgit push
しておいてもらえると助かります.また,requirements.txt
をインストールするには,
([virtual_environment_name]) $ pip install -r requirements.txt
を実行すれば,requirements.txt
に書き込まれているライブラリなどをインストールできます.環境構築が1行で終わってしまいます!嬉しいですね!
終わりに
手順を忘れたりしない出来の良い脳なら良いのですが,そうでもないので,個人的備忘録でした.