Scipyをインストールしたい(すでにNumpyがインストールされている)。 OSおよびIDLE3(3.5.2)と共にPython 3.5.1-3がインストールされています。ターミナルに当たったとき
Sudo pip3 install scipy
印刷する
Traceback (most recent call last):
File "/usr/bin/pip3", line 9, in <module>
from pip import main
ImportError: cannot import name 'main'
私はすでにpip3を再インストールしてOSを再起動しようとしましたが、それは変わりませんでした。 pip3は他の誰かと奇妙に働いていますか?
numpyとscipyは、現在サポートされているUbuntuのすべてのバージョンのデフォルトリポジトリにあります。 Python 3.xのnumpyとscipyをインストールするには、ターミナルを開いて次のように入力します。
Sudo apt update
Sudo apt install python3-numpy python3-scipy
Python 2.xの場合:
Sudo apt update
Sudo apt install --no-install-recommends python2.7-minimal python2.7 # this line is only necessary for Ubuntu 17.10 and later
Sudo apt install python-numpy python-scipy
python -m pip install
の代わりにpip install
を使用
例:
python -m pip install --user somepackage
python3 -m pip install --user somepackage
pip
アップグレード後にこの問題が発生し始めました:
pip install --upgrade --user pip
pip
(またはpip3
)実行可能ファイルは、ディストリビューション(Ubuntu 16.04のpython-pip
パッケージ)によって提供されます。
したがって、pipをアップグレードするときにpip
パッケージ自体で最新状態に保たれず、破損する可能性があります。
python -m pip
を直接使用する場合、たとえば次のように:
python -m pip install --user somepackage
python3 -m pip install --user somepackage
Pythonパスを調べて、最新バージョンのpipを見つけ、そのファイルを実行します。
それは、そのファイルが実行可能であるという事実に依存していますが、それは非常に標準的なタイプのインターフェースであり、したがって、ハッカーのDebianスクリプトよりも壊れにくいです。
次に、.bashrc
に次のエイリアスを追加することをお勧めします。
pip() ( python -m pip "$@" )
pip3() ( python3 -m pip "$@" )
pip3
9.0.1から18.0への更新後、Ubuntu 16.04でテスト済み。
バグはpip 10.0.0にあります。
Linuxでは、次のファイルを変更する必要があります:/ usr/bin/pip from:
from pip import main
if __== '__main__':
sys.exit(main())
これに:
from pip import __main__
if __== '__main__':
sys.exit(__main__._main())
Karelは「numpy and scipyのインストール」の問題を解決したかもしれませんが、システムのpipの問題は解決されていないため、pipの今後の問題がさらに増えるでしょう。
こちら を見ると、Ubuntuシステムでのpip 10での最近の非常に一般的な問題のようです。そのスレッドであなたのために働くいくつかの回避策を見つけるかもしれませんが、うまくいけばアップデートがすぐにそれを修正するでしょう。
私も同じ問題を抱えていましたが、aptとpipでアンインストールして再インストールしてもうまくいきませんでした。
Pip3パスを回復する簡単な方法を提供する別のソリューションを見ました:
Sudo python3 -m pip uninstall pip && Sudo apt install python3-pip --reinstall
Aptとpipの両方からpipをインストールすると、これが発生する可能性があります。
私の場合、Ubuntuのpipパッケージを使用してpipenvをインストールし、pipenvがpipの新しいコピーをインストールしました。シェルがUbuntuのpip 9スクリプトを実行して(which pip3
を実行することを確認する)、Pythonインタープリターがpip 10モジュールをインポートするため、pip3コマンドは失敗します。したがって、2つのうちの1つをアンインストールします。
理由により新しいピップを持っていると仮定するのは公平です。その場合、次のように古いpipをアンインストールします。
Sudo apt remove python3-pip
古いpipで問題がなく、システムパッケージを好むことが確実にわかっている場合は、新しいパッケージをアンインストールする必要があります。
~/.local/bin/pip3 uninstall pip
またはそれが失敗する
Sudo /usr/local/bin/pip3 uninstall pip
タイプ
hash -d pip3
これにより、このエラーが削除されます。
私の問題は、python3.6と3.7の間の不一致でした。 python3.6にインストールすると、システムがpython3.7にアップグレードされたにもかかわらず、/usr/bin/python3 -> /usr/bin/python3.6
にリンクが設定されました。
Sudo apt purge python-pip
Sudo apt purge python3-pip
Sudo apt install python3.7 --reinstall
cd /usr/bin
Sudo rm python3
Sudo ln -s python3.7 python3
python3 --version
pip3 --version
this githubページに示されているように、pipの強制再インストールは、ほとんどのユーザーにとってうまく機能します。
python -m pip install --force-reinstall pip