ImportError: невозможно импортировать имя main при выполнении команды pip --version в 32-битной Windows7


144

Я установил последний Python (2.7.9) в комплекте с pip и setuptools для Windows 32-bit. Я попытался переустановить pip, но проблема сохраняется.

Вот ошибка после запуска pip --versionв Администратор cmd:

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

1
Это может быть связано с разрешением файла была проблема с питоном 3.4 здесь , что была решена, это стоит чек.
Коби К

Я сделал обходные пути с помощью команды icacls, но ошибка сохраняется.
Woootiness

2
Ответ "easy_install -U pip" предоставлен на stackoverflow.com/questions/28031277/… unpack-url
J1MF0X

Ответы:


172

Несмотря на то, что первоначальный вопрос, похоже, относится к 2015 году, эта «ошибка», похоже, также влияет на пользователей, выполняющих установку pip-10.0.0.

Обходной путь - не модифицировать pip, а изменить способ вызова pip. Вместо вызова /usr/bin/pipзвонить pipчерез сам Python. Например, вместо нижеуказанного:

pip install <package>

Если из Python версии 2 (или по умолчанию вызывается двоичный файл Python python) выполните:

python -m pip install <package>

или если из Python версии 3:

python3 -m pip install <package> 

да, я не помню, что я сделал, чтобы исправить это, но я оставляю это открытым для других.
Woootiness

Когда я использовал данную команду, я получил ошибку прав доступа (которую я также получил после изменения пункта в соответствии с ответом catalinpopescu). Однако, чтобы загрузить пакеты для области пользователя (чтобы вам не требовались права администратора), используйте: python3 -m pip install <пакет> --user (работает для python3, также должен работать для python2, хотя и не тестировался)
randmin

Помог мне на Mac.
Чарльз Росс

Лучше ответь. Модификация исходного кода - это болото.
Озгур

Это действительно хороший путь. Это также делает его очень легко получить уверенность в том, что вы используете правильную версию:python2 -m pip install $package
JamesTheAwesomeDude

256

Ошибка найдена в пипе 10.0.0.

В Linux вам нужно изменить файл: / usr / bin / pip из:

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

к этому:

from pip import __main__
if __name__ == '__main__':
    sys.exit(__main__._main())

1
Кажется, это решение. Я попробовал это и без проблем до сих пор.
Хюэ,

2
Я использую пип 10.0.1 и ошибка все еще там. Вам помогло решение. Спасибо! Вы сообщили об этой ошибке и ее решении разработчикам?
Алексей Субач

7
Хотя это решение работает, пожалуйста, воздержитесь от модификации pip. Смотрите более чистое решение ниже, чтобы звонить pipиз Python.
Ван Бахтияр

1
Не помогает на "pip 10.0.1". pip --version pip 10.0.1 from /home/x/.local/lib/python2.7/site-packages/pip (python 2.7) использование: sudo pip install tensorflow выходные данные:Traceback (most recent call last): File "/usr/bin/pip", line 9, in <module> from pip import main ImportError: cannot import name main
user_x

3
@creepy_driver, ручная модификация установленного пакета для соответствия среде не рекомендуется, потому что при следующем обновлении до другой версии, то есть 10.0.3, вы, вероятно, столкнетесь с той же проблемой. Обходной путь запуска pipчерез установленный Python укажет pip правильно использовать подходящую среду.
Ван Бахтияр

60

На Ubuntu Server 16 у меня та же проблема с python27. Попробуй это:

+ Изменить

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

к

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

1
Работал над Ubuntu 16.04
Самера Кумарасингха

Это не очень хорошая идея. Как упоминалось в другом ответе @RichardElkins: «Люди не должны тратить свое время на редактирование установленных файлов, не предназначенных для изменения после установки»
juergi

20

В Windows 10 я использовал следующие команды для понижения pip:

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

Это также должно работать на Linux и Mac тоже.


1
Это должен быть python -m pip install pip ==
9.0.3

@elelias О, я этого не осознавал. Спасибо, что сказал мне!
kiyah

1
Мне пришлось, python easy_install.py pip==9.0.3потому что после первой строки, пипс не был найден.
Сюзанна

3
Работает на Linux и Mac тоже. Это обходной путь до исправления pip / pip3 10. Люди не должны тратить свое время на редактирование установленных файлов, не предназначенных для изменения после установки ..
Ричард Элкинс

У меня были проблемы с путями после обновления, я сделал следующее, чтобы он заработал. sudo python -m pip удалить pip && sudo apt установить python-pip --reinstall
webjockey

10

У меня была такая же проблема, но удалить и переустановить с помощью apt и pip у меня не получилось.

Я видел другое решение, которое представляет простой способ восстановить путь pip3:

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

1
У меня был python 2.7, поэтому мне пришлось изменить команду, чтобы она соответствовала python 2.7. Sudo python -m pip uninstall pip && sudo apt install python-pip --reinstall
webjockey

отлично работает на Ubuntu, но я думаю, что он не будет работать на Windows
Zaki Benz

8

я исправил проблему, переустановив пип с помощью get-pip.py.

  1. Загрузите get-pip с официальной ссылки: https://pip.pypa.io/en/stable/install/#upgrading-pip
  2. запустить его с помощью COMMANDE: python get-pip.py.

И пункт исправлен и работает отлично.


1
Поменяйте питона get-pip-pyна питонаget-pip.py
YourFriend

1
Работал отлично! Спасибо.
Шамбо

У меня тоже сработало. Спасибо
Абхишек Кишоре

2

В MacOS, если вы установили python через Homebrew, измените строку в /usr/local/opt/python/libexec/bin/pip

из

from pip.internal import main

в

from pip._internal import main

Или используйте этот лайнер: sed -i '' "s/from pip import main/from pip._internal import main/" /usr/local/opt/python/libexec/bin/pip

Объяснение:

Проблема вызвана изменениями в pip версии 10, перемещающими внутреннее пространство имен, main._internalи сценарием bin, установленным homebrew, который по-прежнему ищет его из старого места (где он был в версии 9). Проблема и некоторые обсуждения https://github.com/pypa/pip/issues/5240


1

Если у вас есть жесткая ссылка для добавления PATH(например, если у вас установлено несколько версий Python), а затем вы обновляете pip, вы также можете столкнуться с этой ошибкой.

Решение состоит в том, чтобы снова создать жесткую ссылку. Или, что еще лучше, прекратите использовать жесткие ссылки и используйте мягкие ссылки.


1
как это исправить?
user_x

1

На Windows 10 у меня была такая же проблема. PIP 19был уже установлен в моей системе, но не появлялся. Ошибка была No Module Found.

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

Понижение pipдо 9.0.3 работало нормально для меня.



0

Работает на 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 __name__ == '__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 __name__ == '__main__':
    sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
    sys.exit(__main__._main())

Сохраните файл и закройте его. И вы сделали!


0

попробуй это

#!/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 __name__ == '__main__':
    sys.exit(main())

0

Простое решение, которое работает с Ubuntu, но может решить проблему и в Windows:

Просто позвони

pip install --upgrade pip

0

Это решило мою проблему в Ubuntu 18.04 при попытке использовать python3.6:

rm -rf ~/.local/lib/python3.6

Вы можете переместить папку в другое место, используя mv, вместо того, чтобы удалить ее, для тестирования:

mv ~/.local/lib/python3.6 ./python3.6_old

0

Откройте свой терминал Linux.

hash -d pip

Привет, Карлос, добро пожаловать в Stack Overflow. Чтобы помочь другим пользователям, столкнувшимся с этой проблемой, пожалуйста, добавьте ответ, чтобы уточнить, что делает эта команда и как она устраняет проблему.
CyberJacob

0

В нашем случае, в 2020 году с использованием Python3, решением этой проблемы было перенести установку Python в cloud-initсценарий запуска, который создавал виртуальную машину .

Мы сталкивались с той же самой ошибкой, когда пытались установить Python, используя сценарии, которые вызывались пользователями позже в жизненном цикле виртуальной машины, но перемещение того же кода установки Python в cloud-initсценарий устранило эту проблему.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.