Всякий раз, когда я пытаюсь установить какой-либо пакет, используя pip, я получаю эту ошибку импорта:
guru@guru-notebook:~$ pip3 install numpy
Traceback (most recent call last):
File "/usr/bin/pip3", line 9, in <module>
from pip import main
ImportError: cannot import name 'main'
guru@guru-notebook:~$ cat `which pip3`
#!/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())
Раньше все работало нормально, я не уверен, почему выдает эту ошибку. Я искал об этой ошибке, но не могу найти ничего, чтобы исправить это.
Пожалуйста, дайте мне знать, если вам нужна дополнительная информация, я обновлю свой вопрос.
pip install --upgrade pip
для обновления pip на сервере, где у меня нет прав администратора. Удаление pip с помощьюpython -m pip uninstall pip
решило мою проблему.Ответы:
Вы, должно быть, непреднамеренно обновили свой системный пункт (вероятно, через что-то вроде
sudo pip install pip --upgrade
)Пип 10.х определяет, где находятся его внутренние органы. Команда,
pip3
которую вы видите, предоставлена вашим сопровождающим пакета (предположительно, основана на Debian?) И не является файлом, управляемым pip.Вы можете прочитать больше об этом на трекере проблем pip
Вы, вероятно, захотите не обновлять ваш системный пип, а вместо этого использовать virtualenv.
Чтобы восстановить
pip3
двоичный файл, вам нужноsudo python3 -m pip uninstall pip && sudo apt install python3-pip --reinstall
.Если вы хотите продолжить в «неподдерживаемой территории» (Обновление системы пакетов за пределы менеджера пакетов), вы , вероятно , можете сойти с руками
python3 -m pip ...
вместоpip3
.источник
sudo apt install python3-pip --reinstall
не устранил проблему, однако я могу установить пакет используяpython3 -m pip
. Спасибо за вашу помощь. Я отмечаю это как принятый.sudo python -m pip uninstall pip && sudo apt install python-pip --reinstall
для python2!Мы можем устранить ошибку, изменив файл pip.
Проверьте расположение файла:
Перейдите в это место ( / usr / bin / pip ) и откройте терминал
Войти:
$ sudo nano pip
Ты можешь видеть:
Изменить на:
затем Ctrl + O записать изменения и выйти
Надеюсь, что это будет делать!
источник
AttributeError: module 'pip.__main__' has no attribute 'main'
pip3
, тоmain()
перемещаетсяpip._internal
. Оператор импорта должен быть изменен наfrom pip._internal import main
Для семейства Ubuntu, Debian, Linux Mint
Благодаря приведенному выше объяснению Энтони вы можете сохранить исходный системный пип (в / usr / bin / и dist-packages /) и удалить установленный вручную пип (в ~ / .local /) для разрешения конфликта:
$ python3 -m pip uninstall pip
Ubuntu / Debian pip v8.1.1 (16.04) из
python3-pip
пакета debian (см.$ pip3 -V
) Показывает те же результаты поиска, что и последний pip v10.0.1, и прекрасно устанавливает последние модули из PyPI. Он имеет рабочуюpip
команду (уже в $ PATH), плюс хороший--user
вариант заплаток , по умолчанию начиная с 2016 года Глядя на примечания к выпуску семечкового , новые версии в основном о прецедентах конкретных исправлений ошибок и некоторых новых функциях, поэтому не каждый должен спешить с обновлением пипа. И в любом случае новый pip 10 может быть развернут в Python virtualenvs.Но независимо от пипсов, ваша ОС позволяет быстро устанавливать обычные модули Python (включая numpy) с APT, без необходимости в пипсах, например:
$ sudo apt install python3-numpy python3-scipy
(с системными зависимостями)$ sudo apt install python3-pip
(патч в Debian, немного старше, но это не имеет значения)Имена пакетов с префиксом
python-
предназначены для Python 2; и с префиксомpython3-
- для Python 3 (например, python3-pandas). Их тысячи, и они проходят тестирование интеграции в Debian и Ubuntu. Если вы не хотите устанавливать на уровне пользователя (pip install --user
опция) или в virtualenv / venv, apt может быть тем, что вам нужно. Эти системные пакеты также доступны из виртуальных envs, поскольку virtualenv будет изящно прибегать к использованию системных библиотек при импорте, если ваши envs не предоставили копии модулей. Ваши пользовательские (с pip--user
) пользовательские модули также~/.local/lib
будут переопределять их.Обратите внимание, поскольку это общесистемная установка, вам редко придется их удалять (нужно помнить о зависимостях ОС). Это удобно для пакетов со многими системными зависимостями (например, с scipy или matplotlib), поскольку APT будет отслеживать и предоставлять все необходимые системные библиотеки и расширения C, тогда как с pip у вас нет таких гарантий .
На самом деле, для общесистемных пакетов Python (в отличие от уровня пользователя, уровня домашнего каталога или ниже) Ubuntu ожидает использовать менеджер пакетов APT (а не
sudo pip
), чтобы избежать взлома ОС:sudo pip3
предназначается для того же/usr/lib/python3/dist-packages
каталога, где APT хранит ОС модули. Последние выпуски Debian / Ubuntu сильно зависят от Python 3, поэтому его предустановленные модули управляютсяapt
и не должны изменяться.Поэтому, если вы используете
pip3 install
команду, убедитесь, что она работает в изолированной виртуальной среде разработки, например, с помощью virtualenv (sudo apt install python3-virtualenv
) или встроенной функции Python3 (-m venv
), или на уровне пользователя (--user
опция pip, по умолчанию в Ubuntu-предоставляемой) pip с 2016 года), но не для всей системы (никогдаsudo pip3
!), потому что pip мешает работе диспетчера пакетов APT и может повлиять на компоненты ОС Ubuntu, когда системный модуль python неожиданно изменяется. Удачи!P. S. Все вышеизложенное относится к «идеальному» решению (путь Debian / Ubuntu).
Если вы все еще хотите использовать новый pip3 v10 исключительно, есть 3 быстрых обходных пути:
bash
) - и pip3 v10 станет доступным (см.pip3 -V
). Debian pip3 v8 остается установленным, но не работает; или$ hash -d pip3 && pip3 -V
для обновления пути pip3 в $ PATH. Debian pip3 v8 остается установленным, но не работает; или$ sudo apt remove python3-pip && hash -d pip3
для полного удаления Debian pip3 v8 в пользу вашего нового pip3 v10.Примечание: вам всегда нужно будет добавлять
--user
флаг к любому пункту, не предоставленному Debian, если вы не в virtualenv! (он развертывает пакеты python в~/.local/
, по умолчанию в python3-pip и python-pip, предоставленных debian / ubuntu с 2016 года). Использование pip 10 для всей системы, кроме virtualenv, не поддерживается Ubuntu / Debian. Никогдаsudo pip3
!Дополнительная информация:
https://github.com/pypa/pip/issues/5221#issuecomment-382069604
https://github.com/pypa/pip/issues/5240#issuecomment-381673100
источник
pip
локально с--user
, то есть безsudo
, влияет на мою способность запускать установленный aptpip
? Я думал, что оба будут сосуществовать. Но этого GIST показывает склонный установлен один перерывы после яpython3 -m pip install --user --upgrade pip
. Я не ищу решения - мне просто искренне любопытно понять, что здесь происходит./usr/bin/pip3
а не ту, которая установлена как--user
(~/.local/bin/pip*
) в соответствии с системой $ PATH операционной системы, которая по-прежнему настроена для запуска системная версия обертки, но не ее библиотеки ..~/.local/lib/python3.?/site-packages/pip
который имеет приоритет над системным и относительным в относительном импорте Python (локальный пользовательский сайт имеет приоритет над глобальными библиотеками). И поскольку более старая обертка пытаетсяfrom pip import main
, чемfrom pip._internal
ее__main__
класс, сравнивать с более новой версией пакета pip, команда pip из gist завершается ошибкойImportError: cannot import name 'main'
. Таким образом, оба пипса могут сосуществовать (на диске), но функциональность оригинальной системы один будет «нарушена» ..--user
.pip install --user
это то, что сделал это для меня. (У меня есть Python 2.7, Python 3.6 и Python 3.7, все они установлены на Ubuntu 18.04 LTS.)решено только в один шаг.
Я тоже сталкивался с этой проблемой, но это можно решить с помощью одной команды, не беспокоясь об этом и не теряя времени, и я пробовал его на нескольких системах, это самое чистое решение для этой проблемы. И это:
Для Python3: -
sudo python3 -m pip uninstall pip && sudo apt install python3-pip --reinstall
.Таким образом, вы можете просто установить пакеты, используя
pip3
. проверить использованиеpip3 --version
.Для более старых версий, используйте:
sudo python -m pip uninstall pip && sudo apt install python-pip --reinstall
.Теперь вы можете просто устанавливать пакеты с помощью
pip
. проверить использованиеpip --version
.источник
Используйте
python -m pip install
вместоpip install
Пример:
pip
(Соотв.pip3
) Исполняемым предоставляется вашим дистрибутивом (python-pip
пакет на Ubuntu 16.04) и находится в/usr/bin/pip
.Поэтому он не обновляется с
pip
самим пакетом при обновлении pip и может сломаться.Если вы просто используете
python -m pip
напрямую, например, как в:он проходит через ваш путь Python, находит последнюю версию pip и выполняет этот файл.
Он основан на том факте, что файл является исполняемым
import
, но это очень стандартный тип интерфейса, и поэтому он менее подвержен поломкам, чем хакерский скрипт Debian.Тогда я рекомендую добавить следующие псевдонимы к вашему
.bashrc
:/usr/bin/pip3
Файл Ubuntu 18.04 делает:и предположительно
main
был удален изpip
в какой-то момент, который сломал вещи.Разрывная фиксация в пипсах выглядит следующим образом: 95bcf8c5f6394298035a7332c441868f3b0169f4 «Переместить все внутренние API в pip._internal», которая вошла в пип 18.0.
Протестировано в Ubuntu 16.04 после обновления с
pip3
9.0.1 до 18.0.pyenv
В конечном счете, однако, для серьезной разработки Python я бы порекомендовал вам установить свой собственный локальный Python с помощью pyenv + virtualenv, что также поможет обойти эту ошибку Ubuntu: /ubuntu/682869/how-do-i- установить-а-другую-питон-версию- с использованием-APT-GET / 1195153 # 1195153
источник
Вы можете решить эту проблему, переустановив pip.
Используйте одну из следующих команд командной строки для переустановки pip:
python2:
python3:
источник
Проверьте, кэшировался ли pip по другому пути, для этого вызовите $ which pip и убедитесь, что путь отличается от того, который был предложен в ошибке, если это так:
Когда кеш очистится, pip снова заработает. ссылка: http://cheng.logdown.com/posts/2015/06/14/-usr-bin-pip-no-such-file-or-directory
источник
Я работаю в системе, где у меня есть sudo apt, но нет sudo pip. (И нет доступа.) Я попал в ту же ситуацию, следуя совету из пипа:
Ни одно из других исправлений не помогло мне, потому что у меня недостаточно прав администратора. Тем не менее, некоторые вещи застряли со мной от чтения этого:
Итак, я нашел эту командную строку для работы, чтобы вернуть меня туда, где я был. Если вы использовали версию, отличную от 8.1.1, вы, очевидно, захотите изменить эту часть строки.
Это единственное, что сработало для меня, но сработало отлично!
источник
Восстановить с помощью
python3 -m pip install --user pip==9.0.1
(или версии, которая работала)источник
То же самое случилось со мной на Pixelbook с использованием нового LXC (strech). Это решение очень похоже на принятое, с одной тонкой разницей, которая для меня исправлена.
Это изменило версию, и теперь она работает, как и ожидалось.
Я нашел это здесь ... Python.org: Убедитесь, что пип актуален
источник
Я столкнулся с той же проблемой в моей системе Ubuntu 16.04. Мне удалось это исправить, переустановив pip с помощью следующей команды:
curl https://bootstrap.pypa.io/get-pip.py | sudo python3
источник
Команды выше не работали для меня, но они были очень полезны:
источник
В Ubuntu 18.04.1 Bionic Beaver вам нужно выйти и снова войти (перезапускать не обязательно), чтобы получить подходящую среду.
источник
Я использую
sudo apt remove python3-pip
тогдаpip
работает.источник
pip
для Python 2. OP используетpip3
версию Python 3pip
, которую вы только что удалили. Эти два отличны и не взаимозаменяемы.Для Python версии 2.7 @Anthony решение отлично работает, изменив python3 на python следующим образом:
источник
Что сработало для меня, чтобы исправить ошибку с использованием
pip3
было:sudo cp -v /usr/local/bin/pip3 /usr/bin/pip3
Все работает:
Может быть, новая версия pip 10.0.1 не обновляет бинарный файл в / usr / bin? (что кажется не так)
РЕДАКТИРОВАТЬ: та же проблема возникает в Ubuntu 18.04. Лучшее решение , которое я нашел это символическая ссылка ПГИ бинарники от
/home/<user/.local/bin
до/usr/local/bin
или/usr/bin
( в зависимости от ваших предпочтений), следующим образом :ПРИМЕЧАНИЕ: замените
<user>
текущим работающим пользователемСвязанные версии (последние) находятся в:
Версия 3.6:
/home/demon/.local/lib/python3.6/site-packages/pip (python 3.6)
Версия 2.7:
/home/demon/.local/lib/python2.7/site-packages/pip (python 2.7)
источник
/usr/bin
. И выPATH
не правы, если/usr/local/bin
не раньше/usr/bin
./usr/local/bin
. Это только в/home/<user>/.local/bin
и / или/home/<user>/.local/lib/python<version>/site-packages/pip
в новых версиях (v10.0 + не обновлять двоичный файл в/usr/bin
). Следовательно, причина, по которой копия или символическая ссылка двоичного файла должна быть создана в/usr/bin
или/usr/local/bin
(в зависимости от предпочтений пользователя), чтобы pip мог запускаться глобально из командной строки.pip
умолчанию в двоичном файле установлена последняя версия, установленная в системеТрюк и работает тоже
источник
У меня была такая же ошибка, но
python -m pip
она все еще работала, поэтому я исправил ее с помощью ядерной опцииsudo python -m pip install --upgrade pip
. Он сделал это для меня.источник
Для чего это стоит, у меня была проблема с
pip
(нетpip2
илиpip3
):Каким-то образом (я не могу вспомнить, как) у меня был установлен Python вещи в моем
~/.local
каталоге. После того как я удалил каталог pip оттуда,pip
снова начал работать.источник
Что-то не так с пакетами, когда он генерирует файл / usr / bin / pip, вы должны изменить импорт:
в
Это решает проблему, я не уверен, почему это произвело, но это говорит что-то в следующей проблеме:
После обновления pip 10 на pyenv "ImportError: невозможно импортировать имя 'main'"
источник
Вы можете попробовать это:
источник
Я также столкнулся с этой проблемой, когда хотел обновить систему
pip
pip3
с 9.0.1 до 19.2.3.После бега
pip3 install --upgrade pip
,pip
версия становится 19.2.3. Ноmain()
был перенесен вpip._internal
последней версии, которая оставляетpip3
сломанной.Так в файле
/usr/bin/pip3
заменитьline 9
:from pip import main
наfrom pip._internal import main
. Проблема будет исправлена, работает так же дляpython2-pip
. (Проверено на дистрибутиве Ubuntu 18.04)По @Vincent H. в ответ
источник
Пожалуйста, выполните следующие команды, чтобы исправить. После запуска
python3 -m pip install --upgrade pip
, пожалуйста, выполните следующую команду.Источник: https://github.com/pypa/pip/issues/5221
источник
Вы можете просто исправить пути pip и pip3, используя
update-alternatives
Первое, что вы должны проверить, это ваш текущий
$PATH
прогонecho $PATH
и посмотреть, вы можете найти,/usr/local/bin
где обычно находятся pip3 и pipесть изменения, которые ваша система ищет здесь,
/bin/pip
и/bin/pip3
поэтому я скажу исправить PATH, добавив к вашему~/.bash_profile
файл , поэтому он сохраняетсяexport PATH=$PATH:/usr/local/bin
а затем проверьте, исправлено ли этоwhich pip
иwhich pip3
если нет, то используйте,
update-alternatives
чтобы исправить это наконеци если вы хотите указать pip на pip3, то
источник
Это сработало для меня!
Теперь удалите установленную версию pip и переустановите ее, используя следующие команды.
Если пункт сломан, используйте:
Надеюсь, поможет!
источник
импортировать main из pip._internal
Изменить код от
источник
/usr/bin/pip3
...Как сказал @cryptoboy - проверьте, какую версию pip / python вы установили
а затем проверьте наличие ненужных библиотек в папке .local / lib /.
Я выполнял резервное копирование настроек при переходе на более новую версию Kubuntu, и в моей домашней директории была папка .local / lib / python2.7 /. Установленный питон 3.6. Я только что удалил старую папку и теперь все отлично работает!
источник
В Debian вам нужно сначала обновить apt ....
Если вы пропустите 'sudo apt-get update -qq', ваш пункт будет поврежден и отобразит ошибку «не удается найти основную».
источник
Эта ошибка может быть разрешающей. Итак, протестируйте выполнение команды с флагом -H :
источник
Используйте следующую команду перед выполнением любой команды pip
Это будет работать
источник