記事の要約
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/env
2. poetry の設定を変更する
仮想環境のPythonやパッケージが置かれるフォルダ (venv
) が仮想環境内部 (例の場合、/Users/username/envの下) に生成される様に設定します
poetry config virtualenvs.inproject true
3. フォルダを仮想環境化します
以下のコマンドを実行します
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.py
2. jupyter notebook の起動・実行
jupyter notebook を起動するためには、python の jupyter
パッケージが必要なので、これをインストールします。
poetry add jupyter
その後、以下のコマンドを打ち込むと jupyter nootebook が起動します
poetry run jupyter notebook