PythonをWindows10で使うにはpyenv-win

以前の環境

Windows10のPythonからOpenCVでTensorFlowするためにやったこと2020年10月版

昔入れてたこちら(▲)があるのですが、この機会にpyenv-winを使って環境を用意していきたいと思います。
ちなみに以前の環境は特に削除せずそのままにしておくことにします。

pyenv-win の公式の入手先と手順

https://github.com/pyenv-win/pyenv-win

入手方法も手順もGitHubにあります。

pyenv-win をインストール

上記リンク先に書いている通りなので、ここでは端折りながら要点だけ抑えていきたいと思います。

PowerShell を起動する

「WIN + X」キーからの「i」キーで起動します。

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"

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"

エラーになる場合

次のようなエラーが発生した場合はPowerShellのポリシー設定が必要です。


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

ポリシーは緩めなくて良いなら緩めたくないので、とはいえ緩めないことには進まないので妥協範囲として「現在開いているウィンドウだけ緩める」という方針でいきたいと思います。

ちなみにセットアップするだけならポリシーを変える必要はないのですが、セットアップしたあとにもついて回る問題になるので、結果的に緩めるという方針になります。

次のコードを入力してEnterします。

Set-ExecutionPolicy RemoteSigned -Scope Process

そして、最初からやり直します。

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"

通しで行うと次のようになります。

下の方の「ディレクトリ」と出ているところにインストールされました。

次のステップからは公式の手順に戻ります。
クイックスタートの2からですね。

PowerShellを起動する

ここまでのステップで既に起動している場合も、終了してから起動しなおしたほうが確実です。

「WIN + X」キーからの「i」キーで起動します。

pyenv --version

PowerShellを開き直したので緩めたポリシーが復活してますね。
毎度ひと手間掛かりますが、お決まりの▼を実行します。

# ポリシーを緩める
Set-ExecutionPolicy RemoteSigned -Scope Process

そしてもう一度

# バージョン
pyenv --version
pyenv 3.1.1
PS C:\Users\aulta>

このように出てきたらインストール成功です。手順に従って続けましょう。

# サポートされているPythonのバージョンを確認
pyenv install -l
上の方は省略
3.11.0
3.11.1-win32
3.11.1-arm
3.11.1
3.11.2-win32
3.11.2-arm
3.11.2
3.11.3-win32
3.11.3-arm
3.11.3
3.12.0a1-win32
3.12.0a1-arm
3.12.0a1
途中省略
3.12.0a7-arm
3.12.0a7-win32
3.12.0a7
PS C:\Users\aulta>

いっぱい出てきますが、安心して使えるのは 数字 . 数字 . 数字 の形のものかな。
となると最新版は 3.11.3 っぽいですね。

# バージョンを指定してインストール
pyenv install 3.11.3

次にグローバルバージョンとして設定します

# 指定したバージョンをグローバルバージョンとする
pyenv global 3.11.3
# 使用しているPythonのバージョンとパスを確認する
pyenv version
# Pythonが動作していることを確認する
python -c "import sys; print(sys.executable)"

環境変数について

ここまでの流れで環境変数の設定は行っていませんが、自動的に追加されています。

一応、確認だけしておきましょう。

pyenv-winの文字化け対策

# バージョンを確認
chcp

通常なら 1250 が出てくるので、65001 に変更する

https://github.com/aoirint/pyenv-win/commit/e9b0e90c2bb6438fdf9e3c2972a34dacc39b419e

C:\Users\★\.pyenv\pyenv-win\bin\pyenv.bat
C:\Users\★\.pyenv\pyenv-win\libexec\libs\pyenv-lib.vbs

これらの 1250 を 65001 に置換する