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のパスよりも上に来るようにしましょう。

pyenvの環境変数の位置

環境変数を更新したら、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を扱えるようにしておくと便利です。

pyenv-thumb

役に立ったらシェアしよう!