<p>pip ImportError:更新後に名前 'main'をインポートできません</p>

作成日 2018年05月28日  ·  18コメント  ·  ソース: pypa/pip

メンテナノート:まだこの問題が発生している場合は、#5599を参照してください。


環境

  • ピップバージョン:???
  • Pythonバージョン:3.5.2
  • OS:Linux sas-linuxmint 4.4.0-92-generic#115-Ubuntu SMP Thu Aug 10 09:04:33 UTC 2017 x86_64 x86_64 x86_64 GNU / Linux
sas@sas-linuxmint /usr/bin $ pip3 install --user --upgrade pip
Collecting pip
  Using cached https://files.pythonhosted.org/packages/0f/74/ecd13431bcc456ed390b44c8a6e917c1820365cbebcb6a8974d1cd045ab4/pip-10.0.1-py2.py3-none-any.whl
Installing collected packages: pip
Successfully installed pip-8.1.1
You are using pip version 8.1.1, however version 10.0.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
ImportError: cannot import name 'main'
sas@sas-linuxmint /usr/bin $ pip3 install --upgrade pip
Traceback (most recent call last):
  File "/usr/bin/pip3", line 9, in <module>
    from pip import main
ImportError: cannot import name 'main'
duplicate

最も参考になるコメント

hash -d pip
私のために働いた

全てのコメント18件

同じ問題

同じ問題

これは#5221と同じです。

@pradyunsgなぜこれをクローズドイシューの複製としてマークするのですか? それがまだ問題であるならば、それは明らかに閉じられていません...

@sydannyhttps

この場合、特定の問題は次のように思われます。

  1. pip3 install --user --upgrade pipはユーザーサイトにpip 10をインストールしますが、pipのシステムサイトコピーをアンインストールしません。
  2. ユーザーは、OSが提供するpip 8からの/usr/bin/pip3からシステムラッパーを実行します。このラッパーはpip 8を表示することを想定していますが、ユーザーサイトがシステムサイトよりも優先されるため、そうではありません。

解決策は、pip 10を--userインストールしたときにインストールされたpipラッパーを使用することです。 つまり、PATHを変更して最初に配置するか、pipを呼び出すときに明示的なパスを使用することを意味します。

技術的には、ここでの問題は#5221とは少し異なります。その問題では、ユーザーがシステムピップを上書きしていました。 ただし、根本的な原因は同じです。新しいバージョンのpipに対して古いpipラッパー(OSが提供)を使用します。 これはサポートされているシナリオではなく、pipを正しく使用すると発生しません。 したがって、pipの問題はありません。したがって、問題が発生したときにクローズします。 間違ったアップグレードの後に​​システムを整理する方法に関するアドバイスの大部分がそこにあるため、ユーザーを#5221に誘導しています。

thang @ cq-gpu :/ mnt / tmp / tqdscripts / azure / nvtf $ pip3 install --user --upgrade pip
トレースバック(最後の最後の呼び出し):
ファイル "/ usr / bin / pip3"、9行目、
pip importmainから
ImportError:名前 'main'をインポートできません

これは私には何もしません。 それでも同じ問題。

#5599とそこにリンクされている問題をご覧ください。

hash -d pip
私のために働いた

pipをアンインストールして再インストールしました。 うまくいくようです。

同じ問題が発生しましたが、aptとpipを使用したアンインストールと再インストールが機能しませんでした。

私はpip3パスを回復する簡単な方法を提示するstackoverflowの別の解決策を見ました:

sudo python3 -m pip uninstall pip && sudo apt install python3-pip --reinstall

こんにちは、仲間! 私は同じ問題を抱えてそれを解決しました。 これが私の解決策です。
まず、pip installを実行すると、次のようなエラーが発生しました。

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

そこで、ファイル/ usr / bin /とcatpip3に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 __name__ == '__main__':
    sys.exit(main())
`

そして、それはインストールパスになかったと思います。 だから私は次のようにpython3-pipにcdします:

cd /.local/lib/python3.5/site-packages/pip
ps:あなたはあなたのコンピュータで正しい方向にcdする必要があります
次に、ファイルをcatして違いを確認します(他の操作を使用してコードを確認できます)。

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 __name__ == '__main__':
    sys.exit(_main())
`

それで、あなたは違いを見ることができますか? ファイルを/ usr / bin / pip3のファイルと同じにする必要があることがわかります

そこで、/。local / lib / python3.5 / site-packages / pipのコードをコピーして、/ usr / bin / pip3のコードを置き換えました。
そして問題は消えます!

ps:pip3またはpipは、この問題に違いはありません。
私の解決策があなたの問題を解決するなら、私は幸せです!

pip3を使用する:+1:

使ってみてください
python3 -m pip install --user "packagename"

@linpanusstは正しいです

sudo ln -sf $( type -P pip ) /usr/bin/pip

同じ問題がここでも発生します。 Deepin OS、15.7。 興味深い点は、通常のユーザーとしては失敗しますが、sudoでは問題なく動作するように見えることです。

$ pip3 search audioshare
Traceback (most recent call last):
  File "/usr/bin/pip3", line 9, in <module>
    from pip import main
ImportError: cannot import name 'main'
$ sudo pip3 search librosa
librosa (0.6.2)  - Python module for audio and music processing

提案された回避策sudo python3 -m pip uninstall pip && sudo apt install python3-pip --reinstallは違いがありません

stackoverflowに投稿された解決策は、 /usr/bin/pip3を編集することは通常のユーザーには役立ちますが、 sudo壊すことを示唆しています:

$ sudo pip3 search librosa
Traceback (most recent call last):
  File "/usr/bin/pip3", line 13, in <module>
    sys.exit(__main__._main())
AttributeError: module 'pip.__main__' has no attribute '_main'

#5599とそこにリンクされている問題をご覧ください。

このページは役に立ちましたか?
0 / 5 - 0 評価