Python 仮想環境完全版
Windowsでの仮想環境構築が厄介なのでそれについて特に書いてますがLinuxでも同じ感じにできます。詳しくは後で説明します。
結論
pyenvでPythonのバージョンを管理し、その中でvenvでライブラリを管理する。
Windowsでのやり方
1.Microsoft StoreでWindows用Pythonをインストール
これによってWindowsと親和性の高いPythonを使えるようになります。
要らないって人はPython公式からインストールしてもいいですが、インストールも簡単なので一応持っておくといいと思います。
2.venv環境を構築
本来ならpyenv環境を作りたいところですが、パッケージ管理等が面倒(pipのライブラリがAppDataに入ってしまったり色々問題があるんですが今回は割愛)なので、一旦venv環境を作ります。(ここではvenvフォルダをユーザフォルダ直下に配置し、その中にrootという環境を作る例を紹介)
コマンドプロンプト(ターミナル)を起動して以下のコマンドを実行します。
python -m venv %USERPROFILE%\venv\root
3.venv環境を有効化
先程作成したvenv仮想環境でpyenv(Pythonバージョンを変えるためのもの)をインストールします。
以下のコマンドを実行してvenv仮想環境を有効化します。
%USERPROFILE%\venv\root\Scripts\activate
ターミナルが以下のように括弧書きに仮想環境名が表示できたらOK。
(root) C:\Users\<アカウント名>>
4.pyenvをインストール
以下のコマンドを実行してユーザフォルダ直下の.pyenvフォルダ内にpyenvをインストールします。
pip install pyenv-win --target %USERPROFILE%\.pyenv
5.pyenvのPathを通す
以下の2つのパスを環境変数Pathに追加します。ユーザ環境変数で十分です。(環境変数の追加の仕方は「環境変数 path windows10」あたりで検索すれば出てくるので割愛します)
※「%USERPROFILE%\AppData\Local\Microsoft\WindowsApps」よりも上に追加してください。デフォルトのPythonを変えられなくなります。よくわからない方はとにかく1番目と2番目に以下のパスを追加しましょう。
%USERPROFILE%\.pyenv\pyenv-win\bin
%USERPROFILE%\.pyenv\pyenv-win\shims
追加できたらターミナルを再起動してください。(Pathを反映させるため)
6.pyenvを使ってPythonをインストール
ここで以下のコマンドを使って好きなバージョンのPythonをインストールします。(ここではバージョン3.7.9をインストールする例を紹介します)
pyenv install 3.7.9
以下のコマンドでどのバージョンがインストールできるか確認できます。
pyenv install --list
7.インストールしたバージョンを有効化
以下のコマンドでインストールしたバージョンのPythonを有効化します。
pyenv shell 3.7.9
有効化できているか確認してみましょう。以下のコマンドでPythonのバージョンが確認できます。
python -V
8.venvで仮想環境を構築
以下のコマンドで現在有効になっているバージョンの仮想環境を構築できます。ここでは、Python3.7.9を有効化したのでvenvフォルダの中にpy37というフォルダを作ってからその中にmyprojectという環境を作成する例を紹介しています。このようにバージョンごとにディレクトリ階層を分けておくと便利かと思います。
python -m venv %USERPROFILE%\venv\py37\myproject
9.仮想環境を有効化
ここまで来たらラストです。作成した仮想環境を有効化しましょう。以下のコマンドで実行できます。
%USERPROFILE%\venv\py37\myproject\Scripts\activate
ちなみに、よく使う環境は環境変数に追加しておくと、ターミナルを開いて「activate」と打つだけでその環境には入れるので便利です。今回の場合、以下のパスを通しておきます。
%USERPROFILE%\venv\py37\myproject\Scripts
10.終わり
お疲れさまでした。
Pythonバージョンの変え方
例えばPython3.9を使いたかったらこんな感じのコマンドで実行できます。
pyenv install 3.9.6
pyenv shell 3.9.6
python -m venv %USERPROFILE%\venv\py39\py39project
%USERPROFILE%\venv\py39\py39project\Scripts\activate
Pythonバージョンは変えずに別環境にする場合
同じPythonバージョンで使用するライブラリのみが違う場合は以下のようにして環境を変えられます。
pyenv shell 3.7.9
python -m venv %USERPROFILE%\venv\py37\py37project
%USERPROFILE%\venv\py37\py37project\Scripts\activate
まとめ
Windows用Pythonをインストールしたらあとは以下のコマンドで全部実行できます。
python -m venv %USERPROFILE%\venv\root
%USERPROFILE%\venv\root\Scripts\activate
pip install pyenv-win --target %USERPROFILE%\.pyenv
以下のパスを通す。
%USERPROFILE%\.pyenv\pyenv-win\bin
%USERPROFILE%\.pyenv\pyenv-win\shims
以下のコマンドを実行。
pyenv install 3.7.9
pyenv shell 3.7.9
python -m venv %USERPROFILE%\venv\py37\myproject
%USERPROFILE%\venv\py37\myproject\Scripts\activate
仮想環境から抜けるときは「deactivate」で出来ます。
Linuxの場合
詳しくは説明しませんが、「Windows用Pythonを入れる→venvでroot環境を作る」を省略できます。pipを使えるようにしたらいきなり「pip install pyenv」でいけると思います。あとは、pyenvでPythonバージョンを、venvでライブラリ環境を変えられる部分は同じです。
最後に
これで全人類がconda pip競合の悲劇を回避できると信じています。(ちなみにconda環境もpyenvから作ることもできるので必要に応じてご活用ください)
今回は、Windowsで、かつあまり高度なコマンドは実行しないであろうという前提でPowerShellは使っていませんが、当然PSでも同様に使用できます。%USERPROFILE%が$HOMEになったり多少は変わってきますが、PSになれてる方も、このPython仮想環境を楽しんでください。
※この記事はどの仮想環境を組み合わせて構築するべきかを紹介する記事なのでpyenvやvenvの詳細な使い方等はそれをメインに扱っている記事をご覧ください。