pipを使って何かパッケージをインストールしようとすると、必ずこのようなインポートエラーが発生します。
guru@guru-notebook:~$ pip3 install numpy
Traceback (most recent call last):
File "/usr/bin/pip3", line 9, in <module>
from pip import main
ImportError: cannot import name 'main'
と表示されます。
guru@guru-notebook:~$ cat `which pip3`
#!/usr/bin/python3
# GENERATED BY DEBIAN
import sys
# Run the main entry point, similarly to how setuptools does it, but because
# we didn't install the actual entry point from setup.py, don't use the
# pkg_resources API.
from pip import main
if __name__ == '__main__':
sys.exit(main())
以前は正常に動作していましたが、なぜこのようなエラーが発生するのかわかりません。 このエラーについて検索してみましたが、解決する方法が見つかりません。
もっと詳しく知りたい方は、質問を更新しますので教えてください。
誤ってシステムのpipをアップグレードしてしまったのではないでしょうか(おそらく、sudo pip install pip --upgrade
のような方法で)。
pip 10.x は内部の位置を調整しています。 あなたが見ている pip3
コマンドは、パッケージメンテナ(おそらくここでは debian ベースでしょう)が提供するもので、pip が管理するファイルではありません。
この件については、pip's issue trackerで詳しく説明されています。
おそらく、システムの pip をアップグレードせず、代わりに virtualenv を使用したいと思うでしょう。
pip3のバイナリを復元するには、
sudo python3 -m pip uninstall pip && sudo apt install python3-pip --reinstall`とする必要があります。
サポートされていない領域"(システムパッケージマネージャの外でシステムパッケージをアップグレードすること)を続けたい場合は、pip3
の代わりにpython3 -m pip ...
で済ませることができるでしょう。
pipが別のパスにキャッシュされているかどうかをチェックします。そのためには、$ which pipを呼び出して、そのパスがエラーで促されたものと異なるかどうかをチェックし、そうであれば実行します。
$ hash -r
キャッシュがクリアされると、pipは再び動作するようになります。 参考: http://cheng.logdown.com/posts/2015/06/14/-usr-bin-pip-no-such-file-or-directory
sudo apt remove python3-pipとすると、
pip` が動作します。
~ sudo pip install pip --upgrade
[sudo] password for sen:
Traceback (most recent call last):
File "/usr/bin/pip", line 9, in <module>
from pip import main
ImportError: cannot import name 'main'
➜ ~ sudo apt remove python3-pip
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages were automatically installed and are no longer required:
libexpat1-dev libpython3-dev libpython3.5-dev python-pip-whl python3-dev python3-wheel
python3.5-dev
Use 'sudo apt autoremove' to remove them.
The following packages will be REMOVED:
python3-pip
0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
After this operation, 569 kB disk space will be freed.
Do you want to continue? [Y/n] y
(Reading database ... 215769 files and directories currently installed.)
Removing python3-pip (8.1.1-2ubuntu0.4) ...
Processing triggers for man-db (2.7.5-1) ...
➜ ~ pip
Usage:
pip <command> [options]