web-dev-qa-db-ja.com

ImportError:Windows 7 32ビットでpip --versionコマンドを実行すると、名前mainをインポートできません

32ビットWindows用のpipおよびsetuptoolsにバンドルされている最新のpython(2.7.9)をインストールしました。私はpipを再インストールしようとしましたが、問題は解決しません。

これはAdministrator cmdでpip --versionを実行した後のエラーです。

Traceback (most recent call last):
 File "D:\Python\lib\runpy.py", line 162, in _run_module_as_main
  "__main__", fname, loader, pkg_name)
 File "D:\Python\lib\runpy.py", line 72, in _run_code 
  exec code in run_globals
 File "D:\Python\Scripts\pip.exe\__main__.py", line 5, in <module>
ImportError: cannot import name main
124
Woootiness

バグはpip 10.0.0にあります。

Linuxでは、ファイル/ usr/bin/pipを以下から変更する必要があります。

from pip import main
if __== '__main__':
    sys.exit(main())

これに:

from pip import __main__
if __== '__main__':
    sys.exit(__main__._main())
224
catalinpopescu

元々の質問は2015年のもののようですが、この「バグ」はpip-10.0.0をインストールするユーザーにも影響を与えるようです。

回避策はpipを変更することではありませんが、pipの呼び出し方法を変更することです。 /usr/bin/pipを呼び出す代わりに、Python自体を通してpipを呼び出してください。例えば、以下の代わりに:

pip install <package>

Pythonバージョン2(またはデフォルトのPythonバイナリがpython)からのものである場合は、次のようにします。

python -m pip install <package>

pythonバージョン3の場合

python3 -m pip install <package> 
143
Wan Bachtiar

Ubuntuサーバー16では、私はpython27と同じ問題を抱えています。これを試して:

変化する

from pip import main
if __== '__main__':
    sys.exit(main())

from pip._internal import main
if __== '__main__':
    sys.exit(main())
51
Shuai Liu

Windows 10では、次のコマンドを使用してpipをダウングレードしました。

python -m pip uninstall pip
python -m pip install pip==9.0.3

できます。

14
zeet

私はget-pip.pyを使ってpipを再インストールすることによって問題を修正しました。

  1. 公式リンクからget-pipをダウンロードしてください: https://pip.pypa.io/en/stable/installing/#upgrading-pip
  2. コマンドpython get-pip.pyを使って実行します。

そしてピップは固定され、完璧に機能します。

6
Bachir Mehemmel

私は同じ問題を抱えていたが、aptとpipを使ったアンインストールと再インストールは私にはうまくいかなかった。

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

Sudo python3 -m pip uninstall pip && Sudo apt install python3-pip --reinstall
4
Hamza Ali

MacOS上でHomebrew経由でpythonをインストールした場合は、/usr/local/opt/python/libexec/bin/pipの行を変更してください。

から

from pip.internal import main

from pip._internal import main

または、この1つのライナーを使用してください:sed -i '' "s/from pip import main/from pip._internal import main/" /usr/local/opt/python/libexec/bin/pip

説明:

この問題は、pipバージョン10の変更により、内部ネームスペースがmain._internalの下に移動し、binスクリプトが古い場所(バージョン9にあった場所)から見たままになっているために発生します。問題といくつかの議論 https://github.com/pypa/pip/issues/524

2
Madis Nõmme

あなたがPATHをピップするためのハードリンクを持っているなら(すなわち、あなたが複数のpythonバージョンをインストールしているなら)そしてあなたがpipをアップグレードするなら、あなたはこのエラーに遭遇するかもしれません。

解決策は、ハードリンクをもう一度作成することです。さらに良いことには、ハードリンクの使用をやめてソフトリンクを使用してください。

Ubuntuで機能する簡単な解決策ですが、Windowsでも同様に問題を解決できます。

電話するだけ

pip install --upgrade pip
0
juergi

これを試して

#!/usr/bin/python
# 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.i
try:
    from pip import main
except ImportError:
    from pip._internal import main
if __== '__main__':
    sys.exit(main())
0
Abdul Gaffar

PyCharmでpip 10を使用する際に同様の問題がある場合は、 最新バージョン をダウンロードしてください。

0
Jacob Geryk

それはubuntu 16.04で動作します。ステップ1:

 Sudo gedit /home/user_name/.local/bin/pip

次の内容でファイルが開きます。

#!/usr/bin/python

# -*- coding: utf-8 -*-
import re
import sys

from pip import main

if __== '__main__':
    sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
    sys.exit(main())

以下のようにmain__main__に変更します。

#!/usr/bin/python

# -*- coding: utf-8 -*-
import re
import sys

from pip import __main__

if __== '__main__':
    sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
    sys.exit(__main__._main())

ファイルを保存して閉じます。そしてこれで終わりです!

0
Anas Musah