以前はScoop版pyenv(pyenv-win)でPythonがインストールできない場合の対処法を提示しました。
今度はScoop版だけでなくWindows11環境においてpyenvのupdateコマンドが動作しない不具合が発生しているようなので、対処法を示します。
困っている方の記事を見かけたのでちょっと早めに記事化しました。
環境
- Windows11 24H2 (26100.4946)
- PowerShell 7.5.2
- pyenv 3.1.1 (「scoop install pyenv」でインストールしたもの。中身はpyenv-win)
症状

Microsoftの方針だかなんだかでVBScriptがhtmlファイルのサポートを廃止したっぽいです。
VBScriptはその脆弱性から2027年頃にそれ自体を廃止される予定です。
対処法
修正ファイルをダウンロード
対症療法ですが、上記URLから下記ファイルをダウンロードしてください。
- pyenv-update-optimized.ps1
- pyenv-update.ps1
- pyenv-update.cmd
内容の確認
正式なバージョンではないため、セキュリティ的に危険な場合もありえます。
必ずファイルの内容に悪意あるコードが無いことを確認してください。
各ファイルをpyenvの所定フォルダにコピー
ダウンロードした3つのファイルを「libexec」フォルダにコピーしてください。
Scoop版の場合は”C:\Users\<user>\scoop\apps\pyenv\current\pyenv-win\libexec”などにあると思います。
updateを実行
あとは「pyenv update」でちゃんとPythonリストがアップデートされるはずです。

注意点
あくまでも対症療法です。

一部の機能に不具合が発生したり、ミラー先が1つだけだったりします。
「libexec」フォルダにある「pyenv-update.vbs」を削除または別フォルダに移動させるとエラーは改善しますが、別にそのままでもOKです。
GIL解除版もインストールしたい場合
GIL解除版がインストールリストから外れてたので、それをインストールしたい場合は「pyenv-update-optimized.ps1」の49行目の
$regexFile = [regex]'python-(\d+)\.(\d+)(?:\.(\d+))?(?:([a-z]+)(\d+))?(?:-(amd64|win32|arm64))?(?:-(web)installer)?\.(.+)'
この部分を
$regexFile = [regex]'python-(\d+)\.(\d+)(?:\.(\d+))?(?:([a-z]+)(\d*))?(?:-(amd64|win32|arm64))?(?:-(web)installer)?\.(.+)'
一箇所変えるだけで「3.13.◯t」がインストールリストに入ります。

まとめ
最近のPython開発はuvばかり使ってるのでこんなエラーがあるなんて気付きませんでした。
コメント