🌶️

pyenv-win の pyenv update コマンドがエラーになる件

に公開

🥺 問題の概要

pyenv-winpyenv update コマンドは、インストール可能なPythonのバージョンリストを更新するコマンドですが、2025年11月現在、コマンドを実行すると、下記のようなエラーが表示されて失敗します。

> 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
C:\Users\Foo\.pyenv\pyenv-win\libexec\pyenv-update.vbs(172, 13) htmlfile: This command is not supported.

エラーメッセージに書かれてあるように pyenv-update.vbs 中の CreateObject("htmlfile") でエラーが発生します。

原因は、最近のWindows 11の更新で htmlfile COMオブジェクトがサポート外になったためです。

このVBSは実行するとネットから情報を取得して pyenv-win内部にある .versions_cache.xml というファイルを更新しているのですが、それが失敗するためインストール可能なPythonのリストを更新できないという状況です。

🔖 対策

pyenv-winのリポジトリにissueも報告されているため、基本的にはメンテナーの修正を待つことになります。

ただし、修正を待てない場合は、以下の方法が有効です。

  1. 公式リポジトリから最新の.versions_cache.xml取得して、内部のファイルと置き換える
  2. pyenv-winを削除して再インストール

.versions_cache.xmlファイルは、ユーザーディレクトリの中の .pyenv\pyenv-win フォルダの中にあります。このファイルを最新版に置き換えれば、とりあえずリストは更新されます。
※ 置き換える前に、現状のファイルのバックアップを取っておくことを強くお勧めします

💡 参考

公式リポジトリにある.versions_cache.xmlファイルでも情報が古くて今すぐにでも更新したい、という場合は手動でファイルを編集し更新することも可能です。

ただ、手動で編集するのもなかなか大変なので、私はpyenv-update.vbsの動作をエミュレートする、小さなPythonスクリプトを作成しました。スクリプトを実行するとカレントフォルダに .versions_cache.xml ファイルを作成しますので、それを pyenv-win のファイルと置き換えばOKです。

GitHub Gistにコードを貼っておきますので、コード先頭にある使用上の注意をよく読んで、もしよろしければお使いください。

では今回はこの辺で。
ご参考になれば幸いです。バイバイ♪😊

Discussion