LoginSignup
5
2

More than 1 year has passed since last update.

Python仮想環境の構築(pyenv + venv)

Last updated at Posted at 2022-05-14

始めに

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行で終わってしまいます!嬉しいですね!

終わりに

手順を忘れたりしない出来の良い脳なら良いのですが,そうでもないので,個人的備忘録でした.

参考文献

[1] 記事1
[2] 記事2
[3] 記事3

5
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
2