521 文字
3 分
pip install --upgrade pipでpipのバージョンを上げるとImportError: cannot import name mainで動かなくなった話
2018-10-28
2018-12-02

aptでpipをインストールした後にpipのバージョンアップを試みると、pipが動かなくなってしまったのでその対策をまとめます。

現象#

WSL (Windows Subsysmte for Linux)、つまりUbuntu 16.04でpipのバージョン9以上を使いたかったのです。でもaptでインストールされたのはpip 8.1.1だったのでpipをアップグレードをしたら、pipが壊れて動かなくなりました。

やったこと#

Terminal window
# pipのインストール
$ sudo apt install python-pip
# バージョン確認
$ pip --version
pip 8.1.1 from /usr/lib/python2.7/dist-packages (python 2.7)
# pip 9以上を使いたかったのでのバージョンアップ
$ pip install --upgrade pip

起きたエラー#

pipコマンドが壊れて、pipで何かやろうとするとこのエラーが出るようになってしまいました。

Terminal window
$ pip
Traceback (most recent call last):
File "/usr/bin/pip", line 9, in <module>
from pip import main
ImportError: cannot import name main

なぜこのエラーが起きるかの原因については、こちらのサイトがわかりやすかったです。どうにもpip 10からディレクトリ構造など諸々変わってしまったのが原因みたい・・・。

対策#

pipのアンインストール#

とりあえずpipを一旦アンインストールします。

Terminal window
# pipのアンインストール
$ sudo apt --purge remove python-pip

このままもう1回aptでpipをインストールしても動かなくなってしまっているので、pipを完全にアンインストールしてやります。

Terminal window
$ python -m pip uninstall pip

これでpipインストール前の綺麗な状態に戻りました。

aptを使わずにpipをインストール#

aptのpipパッケージが新しくなればこのアップデートで動かなくなる問題も解決するかもしれませんが、今回はaptを使ったpipのインストールは諦めて、使わない方法に切り替えます。

Terminal window
# aptを使わずpipのインストール
$ curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
$ sudo python get-pip.py

これでpipがインストールされました。バージョンを確認すると、目的のpip 9以上がインストールされているのが確認できます。

Terminal window
$ pip --version
pip 18.1 from /usr/local/lib/python2.7/dist-packages/pip (python 2.7)