Pythonの仮想環境の構築は素の状態からすることはあまりなく、すべての工程になると忘れがちです。また、OSによってもかなり異なる部分がありました。そこで、pyenvとvenvを使った仮想環境の構築方法をOS間で比較するような形でまとめてみました。
Python本体のインストール
Windows11
Windows11の場合は素の状態ではPythonがインストールされていないので、インストーラーを公式からダウンロードしてインストールします。以下のリンク先はPython 3.11.0のインストーラーのダウンロードページです。
パスを通す設定でインストールします。
Mac
Macの場合はデフォルトでPythonが入っていてpython3
で起動します。
pyenvのインストール
Windows11
PowerShellを開いて以下のコマンドの実行します。
pip install pyenv-win --target $HOME\\.pyenv
続いて、以下のコマンドを実行してPYENV
とPYENV_HOME
、PYENV_ROOT
を環境変数に追加します。
[System.Environment]::SetEnvironmentVariable('PYENV',$env:USERPROFILE + "\.pyenv\pyenv-win\","User")
[System.Environment]::SetEnvironmentVariable('PYENV_ROOT',$env:USERPROFILE + "\.pyenv\pyenv-win\","User")
[System.Environment]::SetEnvironmentVariable('PYENV_HOME',$env:USERPROFILE + "\.pyenv\pyenv-win\","User")
最後に以下のコマンドで\.pyenv\pyenv-win\bin
\.pyenv\pyenv-win\shims
をパスに追加したらインストール完了です。
[System.Environment]::SetEnvironmentVariable('path', $env:USERPROFILE + "\.pyenv\pyenv-win\bin;" + $env:USERPROFILE + "\.pyenv\pyenv-win\shims;" + [System.Environment]::GetEnvironmentVariable('path', "User"),"User")
Mac
HomeBrewがインストールされていない場合はこれをインストールします
インストールは以下のコマンドで行います。
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
最後に以下のコマンドでパスを通して完了です。
echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> /Users/<ユーザー名>/.zprofile
eval "$(/opt/homebrew/bin/brew shellenv)"
続いてpyenvをインストールします。
以下のコマンドでpyenvをインストールしたら、
brew update
brew install pyenv
以下のコマンドでパスを通して完了です。
export PYENV_ROOT="$HOME/.pyenv"
command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"
pyenvでのPythonバージョンの切り替え
ここからはWindows/Mac共通です。
以下のコマンドを打つとインストール可能なPythonのバージョンリストが表示されます。
pyenv install -l
その中からインストールしたいバージョンを選び以下のようなコマンドでインストールします。
pyenv install 3.10.0
pyenvでインストールされているPythonの中から以下のようにバージョンを指定すると使用するPythonのバージョンを切り替えられます。
pyenv global 3.10.0
pyenv global
とだけ打つと、指定されているバージョンを確認できます。また、インストールされているPythonのバージョンリストはpyenv versions
で確認できます。
仮想環境構築
以下のコマンドを実行すると指定したパスに指定した名前の仮想環境が構築されます。
python -m venv パス/<仮想環境名>
Windowsではデフォルトでインタプリタもコピーされますが、Macだとインタプリタはコピーされずリンクファイルだけ作られます。インタプリタもコピーさせたい場合は--copies
オプションを付けます。
python -m venv パス/<仮想環境名> --copies
VSCodeでPythonのインタプリタを指定することで使用する仮想環境を切り替えたいとき、Macではインタプリタをコピーしておかないと上手く指定できません。ただし、プロジェクト毎に専用の仮想環境を作るのであれば特に意識する必要はないと思います。
仮想環境のアクティベート
以下のコマンドで仮想環境がアクティベートされます。
Windows11
<venv>\Scripts\Activate.ps1
Mac
source <venv>/bin/activate
どちらもdeactivate
で仮想環境を抜けることができます。