Windowsでのpipのアップデート(10.0.1⇒18.0)
PyCharmを入れてみたときにpip upgradeできなかったので備忘録
■現象
・PyCharmのterminalからpip upgradeを実行すると以下のエラー。
pip listで見ると10.0.1のままだがpip upgradeすると最新バージョンとなっている。
・参考先と同じく強制再インストールすれば入る。
エラーログ + デバッグログ
(venv) D:\prog\work\deepleaning>pip list
Package Version
---------- -------
pip 10.0.1
setuptools 39.1.0
You are using pip version 10.0.1, however version 18.0 is available.
You should consider upgrading via the 'python -m pip install --upgrade pip' command.
(venv) D:\prog\work\deepleaning>python -m pip install --upgrade pip
Collecting pip
Using cached https://files.pythonhosted.org/packages/5f/25/e52d3f31441505a5f3af41213346e5b6c221c9e086a166f3703
d2ddaf940/pip-18.0-py2.py3-none-any.whl
Installing collected packages: pip
Found existing installation: pip 10.0.1
Uninstalling pip-10.0.1:
Successfully uninstalled pip-10.0.1
Rolling back uninstall of pip
Exception:
Traceback (most recent call last):
File "D:\prog\work\deepleaning\venv\lib\site-packages\pip-10.0.1-py3.6.egg\pip\_internal\basecommand.py", line
228, in main
status = self.run(options, args)
File "D:\prog\work\deepleaning\venv\lib\site-packages\pip-10.0.1-py3.6.egg\pip\_internal\commands\install.py",
line 335, in run
use_user_site=options.use_user_site,
File "D:\prog\work\deepleaning\venv\lib\site-packages\pip-10.0.1-py3.6.egg\pip\_internal\req\__init__.py", lin
e 49, in install_given_reqs
**kwargs
File "D:\prog\work\deepleaning\venv\lib\site-packages\pip-10.0.1-py3.6.egg\pip\_internal\req\req_install.py",
line 748, in install
use_user_site=use_user_site, pycompile=pycompile,
File "D:\prog\work\deepleaning\venv\lib\site-packages\pip-10.0.1-py3.6.egg\pip\_internal\req\req_install.py",
line 961, in move_wheel_files
warn_script_location=warn_script_location,
File "D:\prog\work\deepleaning\venv\lib\site-packages\pip-10.0.1-py3.6.egg\pip\_internal\wheel.py", line 431,
in move_wheel_files
generated.extend(maker.make(spec))
File "D:\prog\work\deepleaning\venv\lib\site-packages\pip-10.0.1-py3.6.egg\pip\_vendor\distlib\scripts.py", li
ne 407, in make
self._make_script(entry, filenames, options=options)
File "D:\prog\work\deepleaning\venv\lib\site-packages\pip-10.0.1-py3.6.egg\pip\_vendor\distlib\scripts.py", li
ne 307, in _make_script
self._write_script(scriptnames, shebang, script, filenames, ext)
File "D:\prog\work\deepleaning\venv\lib\site-packages\pip-10.0.1-py3.6.egg\pip\_vendor\distlib\scripts.py", li
ne 243, in _write_script
launcher = self._get_launcher('t')
File "D:\prog\work\deepleaning\venv\lib\site-packages\pip-10.0.1-py3.6.egg\pip\_vendor\distlib\scripts.py", li
ne 386, in _get_launcher
result = finder(distlib_package).find(name).bytes
AttributeError: 'NoneType' object has no attribute 'bytes'
■原因
・t64.exeを探しに行くが見つからないためNoneが戻され、Noneのbytesメンバーに
アクセスしようとしている。
・PyCharmで作成したVirtualEnvを見ると、
初回は、D:\prog\work\base\venv\Lib\site-packages\pip-10.0.1-py3.6.egg\pip 失敗後は、D:\prog\work\base\venv\Lib\site-packages\pip
とフォルダ構成が違うため、ただしフォルダパスを検索できていないようだ。
違う原因はpip-10.0.1をeasy-installで展開したしただけになっているから?
※未確認、フォルダ名からの予想
・2回目の強制再インストールは、失敗後のpipから実行しているため
正しく動作しているようだ。
■対策
・一応今のところ下記のどちらかで問題なく動いている。
①参考先と同じく強制再インストールすれば入る。
②VirtualEnvでProject作成後に、
[PJFolder]\venv\Lib\site-packages\pip-10.0.1-py3.6.egg\pipフォルダを
一つ上の階層([PJFolder]\venv\Lib\site-packages\pipフォルダ)に移動させる。