私が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 __== '__main__':
sys.exit(main())
それは以前はうまくいっていました、なぜそれがこのエラーを投げているのか私にはわかりません。
詳細が必要な場合はお知らせください。質問を更新します。
システムピップを誤ってアップグレードしたに違いありません(おそらくSudo pip install pip --upgrade
のような方法で)。
pip 10.xは、その内部が配置されている場所を調整します。あなたが目にしているpip3
コマンドはあなたのパッケージメンテナによって提供されたもの(おそらくここにあるdebian?)であり、pipによって管理されるファイルではありません。
あなたはこれについてもっと読むことができます pipのissue tracker
あなたはおそらくシステムのpipをnotアップグレードして代わりにvirtualenvを使うことを望むでしょう。
pip3
バイナリを復元するには、Sudo python3 -m pip uninstall pip && Sudo apt install python3-pip --reinstall
が必要です。
「サポートされていない地域」(システムパッケージマネージャの外でシステムパッケージをアップグレードする)を継続したい場合は、おそらくpython3 -m pip ...
の代わりにpip3
を使うことができます。
Anthonyの説明 above のおかげで、元のシステムpip(/ usr/bin /およびdist-packages /)を保持し、手動でインストールしたpip(〜/ .local /)を削除して解決できます紛争:
$ python3 -m pip uninstall pip
Ubuntu/Debian pip v8.1.1(16.04)from python3-pip
debianパッケージ(see$ pip3 -V
)は、最新のpip v10.0.1と同じ検索結果を表示し、PyPIから最新のモジュールをインストールします。動作中のpip
コマンド(既に$ PATHにあります)に加えて、2016年以降デフォルトでパッチされたNice --user
オプションがあります。 pip release notes バージョンは主にユースケース固有のバグ修正と特定の新機能に関するものであるため、not誰もがまだpipをアップグレードする必要があります。とにかく、新しいpip 10はPython virtualenvsにデプロイできます。
ただし、pipに関係なく、OSでは、pipを使用せずに、APTを使用して一般的なPythonモジュール(numpyを含む)を迅速にインストールできます。$ Sudo apt install python3-numpy python3-scipy
(システム依存関係あり)$ Sudo apt install python3-pip
(Debianパッチを適用したpip、やや古いが重要ではありません)
クイックapt構文のリマインダー(詳細については
man apt
をご覧ください):$ Sudo apt update
(最新のソースからUbuntuパッケージのインデックスファイルを再同期するため)$ apt search <python-package-name>
(利用可能なすべてのパッケージの全文検索)$ apt show <python-package-name>
(詳細なパッケージの説明を表示)$ Sudo apt install <python-package-name>
python-
というプレフィックスが付いたパッケージ名はPython 2用です;接頭辞python3-
はPython 3用です(例:python3-pandas)。数千があり、DebianとUbuntu内で統合テストを受けています。ユーザーごとのレベル(pip install --user
オプション)またはvirtualenv/venv内にインストールする場合を除き、aptが必要な場合があります。 virtualenv は、envがモジュールのコピーを指定していない場合、インポート時にシステムライブラリの使用に正常にフォールバックするため、これらのシステムパッケージは仮想envからもアクセスできます。カスタムインストール(pip --user
)ごとの~/.local/lib
のユーザーごとのモジュールもオーバーライドします。
これは システム全体 インストールであるため、それらを削除する必要はほとんどありません(OSの依存関係に注意する必要があります)。これは、APTが追跡し、必要なすべてのシステムライブラリとC拡張を提供するため、多くのシステム依存関係があるパッケージ(scipyやmatplotlibなど)に便利ですが、pipでは no such保証 。
実際、システム全体のPythonパッケージ(ユーザーごと、ホームディレクトリレベル、またはそれ以下)とは対照的に、Ubuntu expects APTパッケージを使用OSの破損を避けるためのマネージャー(Sudo pip
ではなく):Sudo pip3
は、APTがOS依存のモジュールを格納する非常に同じ/usr/lib/python3/dist-packages
ディレクトリをターゲットにします。最近のDebian/UbuntuリリースはPython 3に大きく依存しているため、プレインストールされたモジュールはapt
によって管理されており、変更しないでください。
したがって、pip3 install
コマンドを使用する場合は、 virtualenv (Sudo apt install python3-virtualenv
)やPython3ビルトイン(-m venv
)、またはユーザーごとのレベル(--user
pipオプション、2016年以降のUbuntu提供のpipのデフォルト)、ただしnotシステム全体(決してSudo pip3
!)、なぜならpip 干渉 APTパッケージマネージャーの操作であり、Ubuntu OSに影響を与える可能性がある コンポーネント used pythonモジュールが予期せず変更されました。がんばろう!
P。S。上記はすべて「理想的な」解決策です(Debian/Ubuntuの方法)。
still新しいpip3 v10のみを使用する場合、3つの簡単な回避策があります。
bash
と入力)-pip3 v10が使用可能になります(pip3 -V
を参照)。 debianのpip3 v8はインストールされたままですが、壊れています。または$ hash -d pip3 && pip3 -V
は、$ PATHのpip3パス名を更新します。 debianのpip3 v8はインストールされたままですが、壊れています。または$ Sudo apt remove python3-pip && hash -d pip3
は、新しいpip3 v10を優先して、debianのpip3 v8を完全にアンインストールします。注:virtualenvにいる場合を除き、常に--user
フラグをdebian以外で提供されるpipに追加する必要があります! (pythonパッケージを~/.local/
にデプロイします。デフォルトは、debian/ubuntuが提供するpython3-pipおよびpython-pipで2016年以降です)。 virtualenv以外のシステム全体でのpip 10の使用は、Ubuntu/Debianでは実際にはサポートされていません。決してSudo pip3
!
詳細:
https://github.com/pypa/pip/issues/5221#issuecomment-382069604
https://github.com/pypa/pip/issues/5240#issuecomment-3816731
pipファイルを修正することでエラーを解消できます。
ファイルの場所を確認してください。
$ which pip
パス - >/usr/bin/pip
その場所( /usr/bin/pip )に移動してターミナルを開きます。
$ Sudo nano pip
を入力してください
あなたは見ることができます:
import sys
from pip import main
if __== '__main__':
sys.exit(main())
への変更:
import sys
from pip import __main__
if __== '__main__':
sys.exit(__main__._main())
それから ctrl + o 変更を書いて終了する
これがうまくいくことを願っています!
一歩だけで解決。
私もこの問題に直面していましたが、これは面倒で時間を無駄にすることなく1つのコマンドで解決することができ、私は複数のシステムでそれを試してみました。そしてそれは:
Python3の場合: - Sudo python3 -m pip uninstall pip && Sudo apt install python3-pip --reinstall
。
これにより、pip3
を使って簡単にパッケージをインストールすることができます。チェックするにはpip3 --version
を使います。
古いバージョンの場合は、Sudo python -m pip uninstall pip && Sudo apt install python-pip --reinstall
を使用します。
これで、pip
を使ってパッケージをインストールすることができます。チェックするにはpip --version
を使います。
python -m pip install
の代わりにpip install
を使用する
例:
python -m pip install --user somepackage
python3 -m pip install --user somepackage
pip
(またはpip3
)実行ファイルはあなたのディストリビューション(Ubuntu 16.04のpython-pip
パッケージ)によって提供され、/usr/bin/pip
にあります。
したがって、あなたがpipをアップグレードするとき、それはpip
パッケージ自体によって最新に保たれず、そして壊れるかもしれません。
python -m pip
を直接使用するだけの場合は、のように:
python -m pip install --user somepackage
python3 -m pip install --user somepackage
それはあなたのPythonパスを通り抜けて最新バージョンのpipを見つけ、そのファイルを実行します。
それはそのファイルがimport
を通して実行可能であるという事実に依存します、しかしそれは非常に標準的なタイプのインターフェースであり、そしてそれ故により危険なDebianスクリプトより壊れる可能性が少ないです。
それから私はあなたの.bashrc
に以下のエイリアスを追加することをお勧めします:
pip() ( python -m pip "$@" )
pip3() ( python3 -m pip "$@" )
pip3
9.0.1から18.0へのアップデート後のUbuntu 16.04でテスト。
Pipが別のパスにキャッシュされているかどうかを確認するには、 $ which pip を呼び出して、パスがエラーで指示されたものと異なることを確認します。
$ hash -r
キャッシュがクリアされると、pipは再び機能します。 reference: http://cheng.logdown.com/posts/2015/06/14/-usr-bin-pip-no-such -file-or-directory
私はSudo aptがあるがSudo pipがないシステムで走っています。 (そして、suアクセスはできません。)私は、pipからのアドバイスに従うことによって、この同じ状況に陥りました。
Pipバージョン8.1.1を使用していますが、18.0が使用可能です。あなたは 'pip install --upgrade pip'コマンドによるアップグレードを検討するべきです。
私には十分な管理者権限がないため、他の修正はどれも私にとってはうまくいきませんでした。しかし、これを読むことから私にはいくつかのことがつきました。
それで、私はこのコマンドラインが私がいた場所に私を戻すために働くのを見つけました。 8.1.1とは異なるバージョンを使用している場合は、明らかにその部分を変更したいと思うでしょう。
python -m pip install --force-reinstall pip==8.1.1 --user
それが私のために働いた唯一のものですが、それは完全にうまくいきました!
この問題を解決するには、pipを再インストールします。
次のコードを使用してpipを再インストールしてください
Python2の場合:
python -m pip uninstall pip && Sudo apt install python-pip --reinstall
Python2の場合:
python3 -m pip uninstall pip && Sudo apt install python3-pip --reinstall
上記のコマンドは私にはうまくいきませんでしたが、非常に役に立ちました。
Sudo apt purge python3-pip
Sudo rm -rf '/usr/lib/python3/dist-packages/pip'
Sudo apt install python3-pip
cd
cd .local/lib/python3/site-packages
Sudo rm -rf pip*
cd
cd .local/lib/python3.5/site-packages
Sudo rm -rf pip*
Sudo pip3 install jupyter
私は私のUbuntu 16.04システムで同じ問題に出会いました。私は次のコマンドでpipを再インストールすることによってそれを修正することができました:
curl https://bootstrap.pypa.io/get-pip.py | Sudo python3
私は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]
同じことがPixelbookで新しいLXC(strech)を使っても起こりました。この解決策は、受け入れられているものと非常によく似ていますが、微妙な違いが1つありますが、私にとっては固定pip3です。
Sudo python3 -m pip install --upgrade pip
それはバージョンをぶつけた、そして今それは予想通りに働く。
ここで見つけました... Python.org: pipが最新であることを確認してください
python3 -m pip install --user pip==9.0.1
(または動作したバージョン)で回復する
pip3
を使用してエラーを修正するために私にとってうまくいったのは、次のとおりです。
Sudo cp -v /usr/local/bin/pip3 /usr/bin/pip3
すべてうまくいく:
demon@UbuntuHP:~$ pip -V
pip 10.0.1 from /usr/local/lib/python3.5/dist-packages/pip (python 3.5)
demon@UbuntuHP:~$ pip2 -V
pip 10.0.1 from /home/demon/.local/lib/python2.7/site-packages/pip (python 2.7)
demon@UbuntuHP:~$ pip3 -V
pip 10.0.1 from /usr/local/lib/python3.5/dist-packages/pip (python 3.5)
たぶん、新しいバージョン10.0.1のpipは/ usr/binの中のバイナリーを更新しませんか?
Pythonバージョン2.7では、@ - Antonyソリューションは python3 を python に変更することで完璧に動作します。
Sudo python -m pip uninstall pip && Sudo apt install python-pip --reinstall
トリックと作品も
Sudo -H pip install lxml
私はこれと同じエラーがありました、しかしpython -m pip
はまだ働いていたので、私は核のオプションSudo python -m pip install --upgrade pip
でそれを修正しました。それは私のためにやりました。
このエラーは許可のものかもしれません。そのため、 -H flagを付けてコマンドを実行してテストします。
Sudo -H pip3 install numpy
@cryptoboyが言ったように - あなたがインストールしたpip/pythonのバージョンを確認してください
demon@UbuntuHP:~$ pip -V
demon@UbuntuHP:~$ pip2 -V
demon@UbuntuHP:~$ pip3 -V
次に、.local/lib /フォルダーに不要なライブラリがないか確認します。
新しいKubuntuに移行していて、ホームディレクトリに.local/lib/python2.7 /フォルダがあるときに設定のバックアップを取りました。 Python 3.6をインストールしました。古いフォルダを削除したところ、すべてうまくいきました。
仲間!私は同じ問題を抱えており、それを解決しました。これが私の解決策です。まず、pip install somethingを実行すると、次のようなエラーが発生しました。
Traceback (most recent call last):
File "/usr/bin/pip3", line 9, in <module>
from pip import main
ImportError: cannot import name 'main'
そのため、ファイル/ usr/bin /とcat pip3にcdして、その中のコードを確認します。私はそれを見ます:
#!/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 __== '__main__':
sys.exit(main())
それから私はそれがインストールパスになかったと思います。だから私はこのように、python3-pipにcdします。
cd /.local/lib/python3.5/site-packages/pip
ps:あなたはあなたのコンピュータの正しい方向にcd [cd]する必要があります。それから私は違いを見るためにファイルをキャットします(あなたはコードを見るために他の操作を使うことができます):
cat __main__.py
そして私はこれを見ました:
from __future__ import absolute_import
import os
import sys
# If we are running from a wheel, add the wheel to sys.path
# This allows the usage python pip-*.whl/pip install pip-*.whl
if __package__ == '':
# __file__ is pip-*.whl/pip/__main__.py
# first dirname call strips of '/__main__.py', second strips off '/pip'
# Resulting path is the name of the wheel itself
# Add that to sys.path so we can import pip
path = os.path.dirname(os.path.dirname(__file__))
sys.path.insert(0, path)
from pip._internal import main as _main # isort:skip # noqa
if __== '__main__':
sys.exit(_main())
それで、あなたは違いを見ることができますか?ファイルを/ usr/bin/pip3内のファイルと同じものにする必要があることがわかります。
そこで、私は/.local/lib/python3.5/site-packages/pipのコードを/usr/bin/pip3のコードに置き換えるようにコピーして問題を解決しました。
ps:pip3またはpipは、この問題に違いはありません。私の解決策があなたの問題を解決したら私は幸せになるでしょう!
python3.6 -m pip install scipy
上記のコマンドで特定のディレクトリにインストールします。
Ubuntu 18.04.1 Bionic Beaverでは、適切な環境を得るためには、ログアウトしてログインし直す必要があります(再起動は不要です)。
$ Sudo apt install python-pip
$ pip --version
pip 9.0.1 from /usr/lib/python2.7/dist-packages (python 2.7)
$ pip install --upgrade pip
$ pip --version
Traceback (most recent call last):
File "/usr/bin/pip", line 9, in <module>
from pip import main
ImportError: cannot import name main
$ exit
<login>
$ pip --version
pip 18.1 from /home/test/.local/lib/python2.7/site-packages/pip (python 2.7)
from pip._internal import main
からピップコードを編集します。
Sudo nano /usr/bin/pip3
それが価値があるものとして、私はpip
(pip2
やpip3
ではなく)に問題がありました:
$ pip -V
Traceback (most recent call last):
File "/usr/bin/pip", line 9, in <module>
from pip import main
ImportError: cannot import name main
$ pip2 -V
pip 8.1.1 from /usr/lib/python2.7/dist-packages (python 2.7)
$ pip3 -V
pip 8.1.1 from /usr/lib/python3/dist-packages (python 3.5)
どういうわけか(どのように記憶していないのか)pythonのものを~/.local
ディレクトリにインストールしました。そこからpipディレクトリを削除すると、pip
が再び機能し始めました。
$ rm -rf /home/precor/.local/lib/python2.7/site-packages/pip
$ pip -V
pip 8.1.1 from /usr/lib/python2.7/dist-packages (python 2.7)
Debianでは、最初にaptを更新する必要があります。
Sudo apt-get update -qq
Sudo apt-get install python-pip -qq
Sudo pip install pip --upgrade --quiet
Sudo pip2 install virtualenv --quiet
'Sudo apt-get update -qq'をスキップすると、pipが破損して 'cannot find main'エラーが表示されます。