ImportError: не може імпортувати основне ім’я під час виконання команди pip --version у Windows7 32-бітному


145

Я встановив останній python (2.7.9) в комплекті з pip та setuptools для 32-розрядних windows. Я спробував перевстановити 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
Це може бути пов’язано з дозволом на файли. Тут була вирішена проблема з python 3.4 , яку варто перевірити.
Кобі К

Я зробив обхідні шляхи за допомогою команди icacls, але помилка зберігається.
Бажання

2
«Easy_install -U піп» відповідь надати в stackoverflow.com/questions/28031277 / ... розпакуйте-адреса
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> 

так, я не пам'ятаю, що я зробив, щоб виправити це, але я тримаю це відкритим для інших.
Бажання

Коли я скористався даною командою, у мене з’явилася помилка дозволу (що я також отримав після зміни піп-файлу відповідно до відповіді catalinpopescu). Однак для завантаження пакетів для сфери користувача (щоб вам не потрібні права адміністрації) використовуйте: python3 -m pip install <package> --user (працює для python3, також повинен працювати для python2, хоча не перевіряється)
randmin

Допомагав мені на Mac.
charles ross

Краща відповідь. Модифікація вихідного коду - це болото.
озгур

Це дійсно хороший шлях. Це також робить насправді легко отримати впевненість, що ви використовуєте правильну версію:python2 -m pip install $package
JamesTheAwesomeDude

257

Помилка виявлена ​​в pip 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
Я використовую pip 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 вкаже піп на правильне використання відповідного середовища.
Ван Бахтіар

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 я використовував наступні команди для поновлення файлу:

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

@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
--встановити

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

прекрасно працює на ubuntu, але я думаю, що він не працюватиме на windows
zaki benz

8

Я вирішив проблему, перевстановивши pip за допомогою get-pip.py.

  1. Завантажте get-pip із офіційного посилання: https://pip.pypa.io/en/stable/installing/#upgrading-pip
  2. запустити його з допомогою COMMANDE: python get-pip.py.

А піп фіксований і працює ідеально.


1
Змінити python get-pip-pyна pythonget-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, встановленому доморощею, який все ще шукає його зі старого місця (де раніше у версії 9). Випуск та деякі обговорення https://github.com/pypa/pip/isissue/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сценарію запуску, який створив імпульс VM.

З цією ж помилкою ми стикалися, коли ми намагалися встановити Python за допомогою скриптів, які викликали користувачі пізніше в життєвому циклі VM, але переміщення того ж коду установки Python до cloud-initсценарію усунуло цю проблему.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.