かつて 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