Windowsでpyenv-winを利用してPythonをインストールする

Linux(WSL) では pyenv を使って Python を複数インストールできました。

Linuxでpyenvを利用してPythonをインストールする Linuxでpyenvを利用してPythonをインストールする

この記事では Windows で Python の複数バージョン管理を行います。以下をやります。

  • Windows に pyenv-win をインストールする
  • pyenv-win を使って、複数の Python をインストールする
  • 仮想環境を作り、特定の Python のバージョンを使う

Windowsにpyenv-winをインストールする

pyenv-win 公式ドキュメントに沿ってインストールを行います。
https://github.com/pyenv-win/pyenv-win?tab=readme-ov-file#pyenv-for-windows

PowerShell を「管理者として実行」で起動します。

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"

このエラーが出ました。

& : このシステムではスクリプトの実行が無効になっているため、ファイル C:\Users\xxx\install-pyenv-win
.ps1 を読み込むことができません。詳細については、「about_Execution_Policies」(https://go.microsoft.co
m/fwlink/?LinkID=135170) を参照してください。
発生場所 行:1 文字:173
+ ... n.ps1" -OutFile "./install-pyenv-win.ps1"; &"./install-pyenv-win.ps1"
+                                                 ~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : セキュリティ エラー: (: ) []、PSSecurityException
    + FullyQualifiedErrorId : UnauthorizedAccess

エラー内の指示通りに Microsoft のサイトを見ます。
https://go.microsoft.com/fwlink/?LinkID=135170

ここの情報も参考にします。
https://github.com/pyenv-win/pyenv-win/issues/332

スクリプトの実行ポリシーを変更する必要がありそうです。

全ての実行ポリシーを見てみます。

> Get-ExecutionPolicy -List

        Scope ExecutionPolicy
        ----- ---------------
MachinePolicy       Undefined
   UserPolicy       Undefined
      Process       Undefined
  CurrentUser       Undefined
 LocalMachine       Undefined

有効な実行ポリシーを取得してみます。

> Get-ExecutionPolicy
Restricted

CurrentUser の実行ポリシーを取得してみます。

> Get-ExecutionPolicy -Scope CurrentUser
Undefined

実行ポリシーを以下のコマンドで変更します。

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

再度インストールコマンドを打つと成功しました。

pyenv-win is successfully installed. You may need to close and reopen your terminal before using it.

PowerShellを立ち上げ直して、pyenv の version を見てみます。

> pyenv version
No global/local python version has been set yet. Please set the global/local version by typing:
pyenv global <python-version>
pyenv global 3.7.4
pyenv local <python-version>
pyenv local 3.7.4

Pythonを複数インストールする

pyenv でインストール可能なバージョンは pyenv install –list で見れます。

> pyenv install --list

Linux に合わせて Python 3.9 と Python 3.13 をインストールします。

> pyenv install 3.13.5
> pyenv install 3.9.13

インストール済のバージョンを見てみます。

> pyenv versions
  3.13.5
  3.9.13

PCで使う Python のバージョンを python global <version> で設定します。

> pyenv global 3.13.5

> pyenv versions
* 3.13.5 (set by C:\Users\xxx\.pyenv\pyenv-win\version)
  3.9.13

仮想環境でPythonの特定のバージョンを使う

以下を行います。

  • Python用のワーキングディレクトリを作成する
  • ワーキングディレクトリ内にPythonのバージョンごとの仮想環境を作成する

HOME直下にワーキングディレクトリ作成

コマンドプロンプトを立ち上げ、homeに移動し、ワーキングディレクトリを作成します。

>cd /d c:\Users\xxx
>mkdir project_python
>cd project_python

仮想環境の作成

Python 3.9 の仮想環境を作成します。

Pythonのバージョンのリストの確認
>pyenv versions
* 3.13.5 (set by C:\Users\xxx\.pyenv\pyenv-win\version)
  3.9.13

カレントディレクトリのPythonのバージョンを3.9.13にする。
>pyenv local 3.9.13

Pythonのバージョンが変わったことを確認する。
>pyenv versions
  3.13.5
* 3.9.13 (set by C:\Users\xxx\project_python\.python-version)

仮想環境の作成
>python -m venv venv_py39

仮想環境の有効化
>.\venv_py39\Scripts\activate

仮想環境でPythonのバージョンの確認
(venv_py39) >python -V
Python 3.9.13

仮想環境の無効化
(venv_py39) >deactivate

Python 3.13 の仮想環境を作成します。

Pythonのバージョンのリストの確認
>pyenv versions
  3.13.5
* 3.9.13 (set by C:\Users\xxx\project_python\.python-version)

カレントディレクトリのPythonのバージョンを3.13.5にする。
>pyenv local 3.13.5

Pythonのバージョンが変わったことを確認する。
>pyenv versions
* 3.13.5 (set by C:\Users\xxx\project_python\.python-version)
  3.9.13

仮想環境の作成
>python -m venv venv_py313

仮想環境の有効化
>.\venv_py313\Scripts\activate

仮想環境でPythonのバージョンの確認
(venv_py313) >python -V
Python 3.13.5

仮想環境の無効化
(venv_py313) >deactivate

以上です。