光のカナダ留学blog

30歳で会社を退職。現在カナダ留学中です。

Ubuntuでpip3コマンドが使えなくなった時の対処法

スポンサーリンク

pip3を10.xへアップグレードした後に、pip3コマンドが使えなくなってしまったため、その原因と対処法を調べてみました(Ubuntu18.04を使用しています)。

原因

pip3 install --upgrade pip

でpip3をアップグレードすると下記のようにpip-10.0.1にアップグレードされます。

f:id:hikaruryugaku:20180708124202p:plain

しかしその後pip3(pip3 installなど)のコマンドを実行しようとするとcannot import name 'main'というエラーが発生します。

f:id:hikaruryugaku:20180708124538p:plain

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

下記リンクによると、上記アップデートでsystemのpipをアップデートして内部メソッドが書き換わったことにより、Ubuntu側で提供されているpip3コマンド(/usr/bin/)使えなくなってしまったことによる、と書かれています。

You must have inadvertently upgraded your system pip (probably through something like sudo pip install pip --upgrade)

pip 10.x adjusts where its internals are situated. The pip3 command you're seeing is one provided by your package maintainer (presumably debian based here?) and is not a file managed by pip.

引用:Python pip3 - cannot import name 'main' error after upgrading pip - Stack Overflow

対処法

上記説明は少し難しいのですが、これを解決する方法は調べた範囲では二通りあるようです。

一つはpip3コマンドの代わりに

python3 -m pip

を用いる方法。こちらはそのままの最新のpipを使用できます。

もしくは、もともとのpip3コマンドを使いたいという場合、pipを下記コマンドで一度アンインストールして

sudo python3 -m pip uninstall pip

その後、aptコマンドで再インストールする方法があります。

sudo apt install python3-pip

この場合、pip3コマンドは使えますが、バージョンはUbuntuのレポジトリにある最新版がインストールされます(下記の場合、pip 9.0.1)。

f:id:hikaruryugaku:20180708140218p:plain

最後に

Ubuntuでpip3コマンドが使えなくなった場合の原因と対処法について説明しました。お役に立ちましたら幸いです。