カテゴリー
PowerShell Python

pip install -U pip 時に Fatal error in launcher: Unable to create process using ~ というエラーが発生した時の解決方法

かつて Python for Windows の v3.8.6 を c:\python-3.8.6-amd64 というフォルダへインストールして使っていました。

v3.8 系の新しいバージョン v3.8.10 へバージョンアップを試み、msi 形式をダウンロードページから入手しインストール。

インストールウイザードにデフォルト表示されたインストール先を変えずにそのまま  c:\python-3.8.6-amd64  へ上書きしました。

ところが、インストール後にこのインストール先の名前がどうにも気に入らなくなったので c:\python-3.8.10-amd64 へ変更しました。

フォルダ名変更を反映させる為レジストリも書き換えました。具体的には管理者モードで PowerShell を起動し次のコードを入力しました。事例は v3.8 なのでコピー&ペーストして再利用される際には十分お気を付けください

function Replace-PropValues {
    param(
        [string] $Path,
        [string] $Before,
        [string] $After
    )
    process {
        $regKey = (Get-Item -Path $path)
        $func = { $regKey.GetValue($args).Replace($Before,$After) }
        $regKey.Property.ForEach( {
            if ($_ -eq "(default)") {
                Set-ItemProperty -Path $regKey.PSPath -Name '(default)' `
                  -Value $func.Invoke('')
            }
            else {
                Set-ItemProperty -Path $regKey.PSPath -Name $_ `
                  -Value $func.Invoke($_)
            }
        })
    }
}
Replace-PropValues -Before "3.8.6" -After "3.8.10" `
  -Path "HKLM:\SOFTWARE\Python\PythonCore\3.8\InstallPath"
Replace-PropValues -Before "3.8.6" -After "3.8.10" `
  -Path "HKLM:\SOFTWARE\Python\PythonCore\3.8\PythonPath"

ついでにシステム環境変数 PATH に書かれていた古いインストール先の名前も変えこれで作業完了かと思い、pip のアップグレードを試みるため表題の通りのコマンドを入力したところ、エラーと遭遇しました。

C:\Users\foobar>pip install -U pip
Fatal error in launcher: Unable to create process using '"c:\python-3.8.6-amd64\python.exe"  "C:\python-3.8.10-amd64\Scripts\pip.exe" install -U pip': ??????????????????

10分間ほど googling の末に、次の2つのコマンド入力で解決できることが分かったので、投稿することにしました。

python -m pip uninstall pip
python -m ensurepip --upgrade

ensurepip の説明はこちら。なるほどねぇ…

因みに pipenv を使って仮想化していましたので次の作業も追加で必要でした。

python -m pip uninstall pipenv
python -m pip install --upgrade pipenv

作成者: ブログの住人

電脳軟件を設ふ生業にて禄を食む者也。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

*

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください