521 文字
3 分
pip install --upgrade pipでpipのバージョンを上げるとImportError: cannot import name mainで動かなくなった話
aptでpipをインストールした後にpipのバージョンアップを試みると、pipが動かなくなってしまったのでその対策をまとめます。
現象
WSL (Windows Subsysmte for Linux)、つまりUbuntu 16.04でpipのバージョン9以上を使いたかったのです。でもaptでインストールされたのはpip 8.1.1だったのでpipをアップグレードをしたら、pipが壊れて動かなくなりました。
やったこと
# pipのインストール$ sudo apt install python-pip
# バージョン確認$ pip --versionpip 8.1.1 from /usr/lib/python2.7/dist-packages (python 2.7)
# pip 9以上を使いたかったのでのバージョンアップ$ pip install --upgrade pip起きたエラー
pipコマンドが壊れて、pipで何かやろうとするとこのエラーが出るようになってしまいました。
$ pipTraceback (most recent call last): File "/usr/bin/pip", line 9, in <module> from pip import mainImportError: cannot import name mainなぜこのエラーが起きるかの原因については、こちらのサイトがわかりやすかったです。どうにもpip 10からディレクトリ構造など諸々変わってしまったのが原因みたい・・・。
対策
pipのアンインストール
とりあえずpipを一旦アンインストールします。
# pipのアンインストール$ sudo apt --purge remove python-pipこのままもう1回aptでpipをインストールしても動かなくなってしまっているので、pipを完全にアンインストールしてやります。
$ python -m pip uninstall pipこれでpipインストール前の綺麗な状態に戻りました。
aptを使わずにpipをインストール
aptのpipパッケージが新しくなればこのアップデートで動かなくなる問題も解決するかもしれませんが、今回はaptを使ったpipのインストールは諦めて、使わない方法に切り替えます。
# aptを使わずpipのインストール$ curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py$ sudo python get-pip.pyこれでpipがインストールされました。バージョンを確認すると、目的のpip 9以上がインストールされているのが確認できます。
$ pip --versionpip 18.1 from /usr/local/lib/python2.7/dist-packages/pip (python 2.7)