 
                                                        記事の要約
pyenv + poetry を使用した仮想環境構築を Windows と Mac で行ったのでその時の内容を纏めます。
導入 : 仮想環境とは
Python における仮想環境とは、PCマシン自体にインストールされた Python 実行環境 (実環境)の他に、同一マシン内に構築された (実環境とは切り離された) 別の Python 実行環境のことを指します。
仮想環境の特徴は、同一マシン内で異なるバージョンの Python や パッケージを利用することができることです。この特徴により、「使いたいパッケージがあるが自マシンの環境では利用できない。でも下手に Python のバージョン変えると他のパッケージの依存関係が壊れて使えなくなるかも…」といった悩みを解決することができます。
また、Python の仮想環境は一つのフォルダ内に全てが構築される為、構築した仮想環境の廃棄も簡単にできます。

Fig1. マシン内の実環境と仮想環境のイメージ 
Python の仮想環境構築・管理ツールには、Python に元々備わっている物も含め複数存在します。今回は、仮想環境構築・パッケージの依存関係管理ツールの poetry と Pythonのバージョン管理ツールの pyenv を使用した仮想環境を構築します。
pyenv と poetry のインストール
Windows と Mac でインストールする方法が異なる為に分けて書きます。
pyenv のインストール と Path の設定
Windows
- 
Powershell を立ち上げて、以下のコードを実行することで、ユーザーフォルダ ( USERPROFILE) にpyenvをインストールしますpip install --target $env:USERPROFILE- gitがある場合は- gitで入れることも可能です。- git clone https://github.com/pyenv-win/pyenv-win.git "$env:USERPROFILE/.pyenv"
 
- 
/.pyenvに環境変数を作成し、更に Path の一番上に/.pyenv/pyenv-win/shimsと/.pyenv/pyenv-win/binを追加します。
 以下のコードは Powershell での環境変数設定するコードです。[System.Environment]::SetEnvironmentVariable(>[System.Environment]::SetEnvironmentVariable('PYENV',$env:USERPROFILE + '¥.pyenv¥pyenv-win¥','User') [System.Environment]::SetEnvironmentVariable('PYENV_ROOT',$env:USERPROFILE + '¥.pyenv¥pyenv-win¥','User')[System.Environment]::SetEnvironmentVariable([System.Environment]::SetEnvironmentVariable('Path',$env:USERPROFILE + '¥.pyenv¥pyenv-win¥bin;'+ $env:USERPROFILE + '¥.pyenv¥pyenv-win¥shims;'+[System.Environment]::GetEnvironmentVariable('Path','User'),'User')
- 
pyenvとPathが通っているか、pyenvのバージョンから、確認します。pyenv --versionここで Error が生じなければ pyenvのインストールは成功です。
Mac
- 
ターミナルを立ち上げて、 gitでpyenvをインストールします。git clone git://github.com/yyuu/pyenv.git ~/.pyenv- Homebrewからもインストールも可能です。- brew install pyenv
 
- 
デフォルトのシェルの確認を行います。 echo $SHELL/bin/zshと出れば zshell が、/bin/bashと出ればbash がデフォルトで開くシェルです。
 それぞれ設定ファイルは、.zshrc及び.bash_profileです。
- 
デフォルトの方のシェルの設定ファイルに pyenvのPATHを追加します。
 vim などで設定ファイル編集を編集し、以下の記述 (pyenvのPath) を追記します。### 以下の Path を .zshrc or .bash_profile に付け加える export PYENV_ROOT="$HOME/.pyenv" export PATH="$PYENV_ROOT/bin:$PATH" eval "$(pyenv init --path)" eval "$(pyenv init -)" export PATH="$HOME/.local/bin:$PATH"
- 
pyenvとPathが通っているか、pyenvのバージョンから、確認します。pyenv --versionここで Error が生じなければ pyenvのインストールは成功です。
poetry のインストール + Path の設定
Windows
- 
Powershell で、以下のコードを実行することで poetryをインストールします(Invoke-WebRequest -Uri https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py -UseBasicParsing).Content | python -
- 
\.poetry\binをPath に追加する[System.Environment]::SetEnvironmentVariable([System.Environment]::SetEnvironmentVariable('Path',$env:USERPROFILE + '¥.poetry¥bin;'+[System.Environment]::GetEnvironmentVariable('Path','User'),'User')
- 
poetryとPathが通っているか、poetryのバージョンから、確認します。poetry --version
Mac
- 
ターミナルで以下のコードを実行することで poetryをインストールしますcurl -sSL https://install.python-poetry.org | python3 -
- 
デフォルトの方のシェルの設定ファイルに poetryのPATHを追加しますexport PATH="$HOME/.local/bin:$PATH"
- 
poetryとPathが通っているか、poetryのバージョンから、確認します。poetry --version
仮想環境の構築
pyenvで特定のバージョンの python をインストール
- 
自身のマシンにインストール可能な python のバージョンを確認します pyenv install --list
- 
使用可能な python のバージョンの中から、バージョンを選び、インストールします (例 : Python 3.8.3) pyenv install 3.8.3
フォルダの仮想環境化
1. 仮想環境にするフォルダを作成し、そこへ移動します
(例 : /Users/username/env というフォルダを仮想環境にする)
以下コマンドでフォルダへの移動します
cd /Users/username/env2. poetry の設定を変更する
仮想環境のPythonやパッケージが置かれるフォルダ (venv) が仮想環境内部 (例の場合、/Users/username/envの下) に生成される様に設定します
poetry config virtualenvs.inproject true3. フォルダを仮想環境化します
以下のコマンドを実行します
poetry initこの時、Python のバージョンやライセンス、著者等の情報を求められるので、適当に埋めるもしくはスキップして下さい
また、コマンド実行後仮想環境にしたフォルダ内に pyproject.toml ファイルがあることを確認ください
- pyproject.tomlは仮想環境の情報、 3 で埋めたPythonバージョンや著者の情報などが入っています。
4. 仮想環境にインストールした python を適用します
- 
pyenv localで仮想環境内でのみ別のバージョンの python を適応させます。 (例: Python 3.8.3)pyenv local 3.8.3
- 
pyproject.tomlの Python のバージョンの欄を、pyenv localで設定したバージョンに書き換えます
- 
poetry envコマンドでtomlを参照してvenvファイルを作成します。poetry env use python
6. 仮想環境で使用したい python パッケージを導入します
パッケージは poetry add コマンドでインストールすることができます。(例 : numpy を入れたいとする)
poetry add numpy仮想環境内においた requirements.txt などを使用して一気にパッケージを導入する場合は、
poetry add $(cat requirements.txt)とすると一気にインストールできます。
しかし、パッケージ同士の依存関係によりインストールの失敗が生じる可能性もあるので、依存関係がきついパッケージから順々にいれていくことをお勧めします。
仮想環境で実行する
1. py ファイルの実行
仮想環境のフォルダ内部に、 pyファイルを入れてください。(例: test.py)
その後、以下のコマンドを打ち込むとファイルの実行ができます。
poetry run python test.py2. jupyter notebook の起動・実行
jupyter notebook を起動するためには、python の jupyter パッケージが必要なので、これをインストールします。
poetry add jupyterその後、以下のコマンドを打ち込むと jupyter nootebook が起動します
poetry run jupyter notebook 
                                                                                                     
                                                                                                    