Windowsにpyenvを導入する方法
pyenvは基本的にlinux向けに作成されています。しかし、Windowsで利用できるようにするツールも存在します。
目次
pyenvの導入
pyenvは、Windows用のパッケージ管理システムであるchocolateyを使用すると良いです。
Chocolateyの導入
公式サイトを見に行くとなにやら色々手順が書かれていますが、正直わかりづらいです。
とはいえ、下記のコマンドをpowershellで実行するだけです。
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
うまく行かなければ管理者権限で実行してください。
上記コマンドで導入できたら、PowerShellを再起動して
choco
を実行し、バージョン情報などが表示されれば完了です。
pyenvインストール
次のコマンドで導入できます。
choco install pyenv-win
他の導入方法では環境変数を手動設定する必要がありますが、chocolateyを使用した場合は自動で設定してくれます。
導入したら
pyenv --version
で導入できているかチェックしましょう。
環境変数の並び替え
すぐ手前で環境変数を自動で設定してくれると書きましたが、環境によっては環境変数の順番が悪くpython
を実行しようとしたときに、pyenvで導入したものではなく、WindowsStoreが開いてしまう場合があります。
そこで環境変数の順序を変更します。
環境変数はユーザ環境変数の方にあり、次の画像のようにWindowsAppsのパスよりも上に来るようにしましょう。

環境変数を更新したら、PowerShellで環境変数を読み直します。
$env:Path = [System.Environment]::GetEnvironmentVariable("Path","Machine") + ";" + [System.Environment]::GetEnvironmentVariable("Path","User")
完了したらとりあえずそのままで置いておいて、pyenvの利用に入ります。
pyenvの基本
pyenvでは、Pythonの導入やバージョン切り替えが可能です。システム全体だけでなく、このプロジェクトはこのバージョンといった使い方もできます。
各種コマンドの確認
pyenvで利用できるコマンドは、pyenv
を実行すると表示できます。
$ pyenv pyenv 2.64.11 Usage: pyenv <command> [<args>] Some useful pyenv commands are: commands List all available pyenv commands duplicate Creates a duplicate python environment ... which Display the full path to an executable whence List all Python versions that contain the given executable See `pyenv help <command>' for information on a specific command. For full documentation, see: https://github.com/pyenv-win/pyenv-win#readme
Pythonインストール
まずは導入したいバージョンのPythonをpyenvで導入します。
インストール可能なPythonのバージョン一覧はpyenv install --list
で表示できます。
$ pyenv install --list 2.4-win32 2.4.1-win32 2.4.2-win32 ... 3.10.0b2 3.10.0b3-win32 3.10.0b3 pypy3.6-v7.3.3-win32 pypy3.7-v7.3.3-win32 pypy3.7-v7.3.4
ここからどのバージョンにするかを決めます。とりあえず適当に最新版(上のリストだと3.10.0b3
)で良いです。
pyenv install 3.10.0b3
導入済みのバージョンは、pyenv versions
で確認できます。ここで、globalに設定されているバージョンには*
が付きます。
$ pyenv versions * 3.10.0b3 (set by C:\Users\xxxx\.pyenv\pyenv-win\version) 3.6.8
システム全体で使うバージョン設定
導入したら、必要な場合はシステムで利用するバージョンに設定しておきます。
pyenv global 3.10.0b3
設定したら、Pythonが正常に設定されているか確認します。
$ python --version Python 3.10.0b3
プロジェクト単位でバージョン設定
python local <バージョン>
を実行すると、実行したディレクトリにファイルが生成されます。
$ pyenv local 3.6.8 $ python --version 3.6.8
実行後に.python-version
が作成され、ここにpyenvで使用するpythonのバージョンが記録されます。gitを利用している場合はバージョン管理対象に含めておきましょう。
このバージョンが適用されるのは、このディレクトリ配下全体になります。それ以外の場所ではそれぞれの.python-version
が適用されるか、globalのバージョンが使用されます。
まとめ
Windowsにpyenvを導入する際は、chocolateyが便利です。使用する際はWindowsAppの方が優先されてしまわないよう、環境変数の順序に気を使う必要があり、ハマりポイントです。
機械学習関連など、Pythonではパッケージによっては新しいバージョンに対応していないものがあるため、pyenvを扱えるようにしておくと便利です。
