🐍

pyenv-winを使ってWindows上にPython環境を構築する

2024/08/04に公開

1.はじめに

pyenv-winを使用することで以下のことができます。

  • Windows環境で簡単にPythonを導入することができる
  • 複数のPythonのバージョンを管理することができる
  • Pythonのバージョンを簡単に切り替えることができる

本記事では以下を実施します。

  • pyenv-winの導入
  • pyenv-winを使ってPythonのバージョンを指定してインストールする

2.pyenv-winの導入

以下をベースpyenv-winを導入していきます。
https://github.com/pyenv-win/pyenv-win/blob/master/docs/installation.md#powershell

2-1. pyenv-winの導入方法

PowerShellを起動する。
以下コマンドで実行ポリシーを変更する。

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope LocalMachine

以下コマンドでpyenv-winを導入する。

Invoke-WebRequest -UseBasicParsing -Uri "https://raw.githubusercontent.com/pyenv-win/pyenv-win/master/pyenv-win/install-pyenv-win.ps1" -OutFile "./install-pyenv-win.ps1"; &"./install-pyenv-win.ps1"
実行時ログ
PS C:\Windows\system32> Invoke-WebRequest -UseBasicParsing -Uri "https://raw.githubusercontent.com/pyenv-win/pyenv-win/master/pyenv-win/install-pyenv-win.ps1" -OutFile "./install-pyenv-win.ps1"; &"./install-pyenv-win.ps1"                   

    ディレクトリ: C:\Users\ユーザ名


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d-----        2024/08/03     18:10                .pyenv
pyenv-win is successfully installed. You may need to close and reopen your terminal before using it.

& : File C:\Users\ユーザ名\install-pyenv-win.ps1 cannot be loaded because running scripts is disabled on this system. For
more information, see about_Execution_Policies at https:/go.microsoft.com/fwlink/?LinkID=135170.
At line:1 char:173
+ ... n.ps1" -OutFile "./install-pyenv-win.ps1"; &"./install-pyenv-win.ps1"
+ ~~~~~~~~~~~~~~~~~~~~~~~~~ 
 + CategoryInfo          : SecurityError: (:) [], PSSecurityException 
 + FullyQualifiedErrorId : UnauthorizedAccess

3.バージョンを指定してPythonをインストールする

ここでは、pyenv-winの導入ができていることを確認し、
実際にpyenv-winを使ってPythonをインストールします。

3-1. py-envの導入確認

pyenv-winが導入できていることを確認する。

PowerShellを再起動し以下実行する。
pyenv-winのバージョンが表示されれば導入完了。

PS C:\Windows\system32> pyenv --version
pyenv 3.1.1

3-2. インストール可能なPythonのバージョン確認

下記コマンドでインストール可能なPythonのバージョンリストを確認する。

pyenv install --list

3-3. Pythonのバージョンを指定してインストールする

以下コマンドでPythonのバージョンを指定してインストールできます。

pyenv install 3.11.9
実行時ログ
PS C:\Windows\system32> pyenv install 3.11.9
:: [Info] ::  Mirror: https://www.python.org/ftp/python
:: [Info] ::  Mirror: https://downloads.python.org/pypy/versions.json
:: [Info] ::  Mirror: https://api.github.com/repos/oracle/graalpython/releases
:: [Downloading] ::  3.11.9 ...
:: [Downloading] ::  From https://www.python.org/ftp/python/3.11.9/python-3.11.9-amd64.exe
:: [Downloading] ::  To   C:\Users\ユーザ名\.pyenv\pyenv-win\install_cache\python-3.11.9-amd64.exe
:: [Installing] ::  3.11.9 ...
:: [Info] :: completed! 3.11.9

3-4. 利用するPythonを指定する

下記コマンドで利用するPythonのバージョンを指定する。

pyenv global 3.11.9

下記のように指定したPythonのバージョンが表示されれば完了。

PS C:\Windows\system32> pyenv global 3.11.9
PS C:\Windows\system32> python --version
Python 3.11.9

Appendix

pyenv-winのインストールが失敗する場合

私の実行時には以下パターンで失敗しました。

  • 実行ポリシーが変更されていない(2-1最初の手順)
  • VSCode上などでPowerShellが開かれていると失敗する場合がありました

また、pyenv-winが正常に動作しない場合は

  • 「C:\Users\ユーザ名\.pyenv」フォルダを削除して再インストールする。
  • 環境変数を再確認する

pyenv-winの環境変数について

変数名 変数値
Path C:\Users\ユーザ名\.pyenv\pyenv-win\bin
Path C:\Users\ユーザ名\.pyenv\pyenv-win\shims
PYENV C:\Users\ユーザ名\.pyenv\pyenv-win\
PYENV_HOME C:\Users\ユーザ名\.pyenv\pyenv-win\
PYENV_ROOT C:\Users\ユーザ名\.pyenv\pyenv-win\

pipのSSL設定

pipコマンドでライブラリインストール時に、SSL関連のエラーが出る場合、
以下コマンドでpipのSSL設定を行うことができます。

pip config set global.cert 証明書のパス

最新のPythonのバージョンがない場合はpyenv-winをアップデートする

Python3.13をインストールしようと、インストール可能なPythonのバージョンリストを確認したところ以下が得られた。
「3.13.a」や「3.13.b」があるが、「a」や「b」が付いていない「3.13.X」が表示されない。
※「3.13.Xa」や「3.13.Xb」などは、開発バージョンとのことなので基本的にはインストールしない。

$ pyenv install -l
3.13.0a1-win32
3.13.0a1-arm
3.13.0a1
3.13.0b4-win32
3.13.0b4-arm
3.13.0b4

この場合、pyenv-winをアップデートすることで、インストール可能なPythonのバージョンリストを更新することができる。

$ pyenv update
:: [Info] ::  Mirror: https://www.python.org/ftp/python
:: [Info] ::  Mirror: https://downloads.python.org/pypy/versions.json
:: [Info] ::  Mirror: https://api.github.com/repos/oracle/graalpython/releases
:: [Info] ::  Scanned 227 pages and found 791 installers.

更新後、再度リストを取得すると、「a」や「b」が付いていない「3.13.0」が増えていた。

$ pyenv install -l
3.13.0a1-win32
3.13.0a1-arm
3.13.0a1
3.13.0b4-win32
3.13.0b4-arm
3.13.0b4
3.13.0

Discussion