web-dev-qa-db-ja.com

python-pip:ImportError:メインの名前をインポートできません

私はDebian 9.5 Stretchリリースを使用しています。 pipの使用中にインポートエラーが発生します。私がpipを使用しようとすると、それは言う:

enter image description here

しかし、私はpythonを使用できます: enter image description here

pythonの2つのバージョンがインストールされています:2.7と3.5

どのpipの出力:/usr/bin/pip

Apt-get pipを使用して再インストールしようとしたところ、初めて完全に正常に動作しましたが、次回は同じエラーが表示されます

の内容 /usr/bin/

enter image description hereenter image description here

何が問題かわからない。

1

これは、同じプレフィックス(apt-get)で2つの異なるパッケージマネージャー(dpkgまたはそのフロントエンド/usr、およびpip自体)を使用していたために発生した可能性が高いです。私はどちらかと思います

  • 最近のapt-get upgradeはいくつかの依存関係を更新していますが、pipapt-getは単にそれらについて知らなかったため、dpkgによってインストールされた他のファイルは更新されませんでしたOR
  • apt-get removeを使用してパッケージを削除した場合、apt-getはこのパッケージの使用を何も認識していなかったため(他のパッケージはpipによってインストールされたため、dpkgデータベースに含まれていなかったため)、警告されませんでした他のパッケージを壊すことについてあなた。

どのパッケージマネージャーでどのパッケージがインストールされたかがわからないので、システムを修復する方法についての具体的なアドバイスはできません。一般的なアドバイスのみです。

複数の異なるパッケージマネージャーを使用しないでください。ファイルシステムの特定の(サブ)ツリーに対して1つのパッケージマネージャーのみを使用すると、不整合が発生します。および/または競合。 /usrツリー用のDebianのパッケージマネージャーはdpkgと呼ばれ、それを呼び出さずにnooneすべきですevertouch /usr

あなたが遭遇するほとんどのpython関連の人々がSudo pip install;に言っても、pipをプッシュしようとすることは確かに役に立ちません。しないでください。 python理由のあるものを含むディストリビューションパッケージがあります。また、 AskUbuntuに関するこの関連質問 および StackOverflowに関するこの回答 も参照してください。


あなたはで新鮮なピップをインストールすることで混乱を修復しようとすることができます

apt-get purge python-pip python3-pip
apt-get install python-pip python3-pip

ただし、dpkgによってインストールされたため、pipが認識していないファイルが残っている可能性があります。確実な方法は、/usr/lib/python*の下にあるすべてのファイルがdebianパッケージに属しているかどうかをチェックし、属していない場合は例外なく削除することです。

ここでも、onlydpkgおよびapt-getaptitudesynapticなどのフロントエンドツールを使用して/usrを変更します。システム全体に.debパッケージとして利用できないものをインストールする必要がある場合は、パッケージを作成してdpkgでインストールするか、/usr/localの下にインストールします。

1
Wüstengecko

Python2.7をデフォルトとして設定します。

Sudo update-alternatives --config python

python2.7を選択します。

pipを削除:

Sudo python -m pip uninstall pip
Sudo apt purge --autoremove python-pip

再インストール:

Sudo apt install python-pip

pip --version

pip 9.0.1 from /usr/lib/python2.7/dist-packages (python 2.7)

pipを最新バージョンにアップグレードしないでください。

1
GAD3R

次のコマンドを試してください:

hash -d pip
0
technodivesh