Всякий раз, когда я пытаюсь установить какой-либо пакет с помощью 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 решило мою проблему.
Ответы мне не помогли. Это была моя проблема: github.com/pypa/pipenv/issues/2095






Вы, должно быть, случайно обновили свой системный пип (возможно, через что-то вроде sudo pip install pip --upgrade)
pip 10.x регулирует расположение его внутренних компонентов. Команда 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. Спасибо за вашу помощь. Я помечаю его как принятый.
@g_p обновил направления "исправления" - просто проверил их в докере (я должен был сделать это в первый раз!)
Мне нужно использовать команду 'python -m pip uninstall pip', поскольку 'sudo pip uninstall pip' дал ошибку, аналогичную исходному вопросу
Спасибо, часть о восстановлении дистрибутива была чрезвычайно полезной.
Сработало для меня, также с помощью этой команды вы можете исправить версию python (2.7) той же проблемы.
Удаление pip из ~ / .local устранило это для меня в Ubuntu 18.04.
sudo apt install python3-pip --reinstall Хорошо работал у меня. Спасибо.
Спасибо! Это помогло! Используйте sudo python -m pip uninstall pip && sudo apt install python-pip --reinstall для python2!
Небольшая модификация комментария @Barmaley, я использовал sudo python2 -m pip uninstall pip && sudo apt install python-pip --reinstall для python2
Работает для Ubuntu в Windows. Решение - это то, что предлагает @Barmaley для python2 (интерпретатора Python по умолчанию).
Если вы используете apt, сначала запустите: sudo apt-get update, затем sudo apt-get install python-pip и никаких ошибок!
Вот что происходит, когда мы копируем и вставляем фрагменты командной строки, не зная, что они делают. Спасибо.
Проверьте, был ли pip кэширован по другому пути, для этого вызовите $ какой пункт и убедитесь, что путь отличается от пути, предложенного в ошибке, если это так, запустите:
$ hash -r
Когда кеш будет очищен, pip снова будет работать. ссылка: http://cheng.logdown.com/posts/2015/06/14/-usr-bin-pip-no-such-file-or-directory
Я использую sudo apt remove python3-pip, тогда pip работает.
~ sudo pip install pip --upgrade
[sudo] password for sen:
Traceback (most recent call last):
File "/usr/bin/pip", line 9, in <module>
from pip import main
ImportError: cannot import name 'main'
➜ ~ sudo apt remove python3-pip
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages were automatically installed and are no longer required:
libexpat1-dev libpython3-dev libpython3.5-dev python-pip-whl python3-dev python3-wheel
python3.5-dev
Use 'sudo apt autoremove' to remove them.
The following packages will be REMOVED:
python3-pip
0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
After this operation, 569 kB disk space will be freed.
Do you want to continue? [Y/n] y
(Reading database ... 215769 files and directories currently installed.)
Removing python3-pip (8.1.1-2ubuntu0.4) ...
Processing triggers for man-db (2.7.5-1) ...
➜ ~ pip
Usage:
pip <command> [options]
Это потому, что pip предназначен для Python 2. OP использует pip3, версию pip для Python 3, которую вы только что удалили. Эти двое различны и не взаимозаменяемы.
Благодаря объяснению Энтони выше вы можете сохранить исходный системный пип (в / usr / bin / и dist-packages /) и удалить установленный вручную пип (в ~ / .local /), чтобы разрешить конфликт:
$ python3 -m pip uninstall pip
Ubuntu / Debian pip v8.1.1 (16.04) из пакета debian python3-pip (см .$ pip3 -V) показывает те же результаты поиска, что и последний pip v10.0.1, и отлично устанавливает последние модули из PyPI. В нем есть рабочая команда pip (уже в $ PATH), а также хорошая опция --user, исправленная по умолчанию с 2016 года. Если посмотреть на примечания к выпуску pip, новые версии в основном касаются исправлений ошибок для конкретных вариантов использования и некоторых новых функций, поэтому нет всем нужно спешить с обновлением pip. И новый pip 10 в любом случае можно развернуть на Python virtualenvs.
Но независимо от пипсов, ваша ОС позволяет быстро устанавливать общие модули Python (включая numpy) с APT без необходимости в пипсах, например: $ sudo apt install python3-numpy python3-scipy (с системными зависимостями) $ sudo apt install python3-pip (исправленный Debian пакет, немного старше, но это не имеет значения)
Quick apt syntax reminder (please see
man aptfor details):$ sudo apt update(to resync Ubuntu package index files from up-to-date sources)$ apt search <python-package-name>(full text-search on all available packages)$ apt show <python-package-name>(displays the detailed package description)$ sudo apt install <python-package-name>
Имена пакетов с префиксом python- предназначены для Python 2; и с префиксом python3- предназначены для Python 3 (например, python3-pandas). Их тысячи, и они проходят интеграционное тестирование в Debian и Ubuntu. Если вы не стремитесь установить на уровне пользователя (опция pip install --user) или внутри virtualenv / venv, apt может быть тем, что вам нужно. Эти системные пакеты также доступны из виртуальных окружений, так как virtualenv корректно вернется к использованию системных библиотек при импорте, если ваши окружения не предоставили копии модулей.
Ваши индивидуально установленные (с помощью 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 с 2016 года), но нет в масштабе всей системы (никогда не sudo pip3!), потому что пип мешает с операцией диспетчера пакетов APT и может повлиять на ОС Ubuntu составные части при неожиданном изменении системного модуля Python. Удачи!
П.С. Все вышесказанное относится к «идеальному» решению (способ 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/, по умолчанию в предоставляемых debian / ubuntu python3-pip и python-pip с 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, влияет на мою способность запускать установленный apt pip? Я думал, что эти двое будут сосуществовать. Но, как показывает это суть, установленный apt ломается после того, как я сделаю python3 -m pip install --user --upgrade pip. Я не ищу решения - мне просто искренне любопытно понять, что здесь происходит.
@George Это происходит из-за несоответствия между библиотеками пакетов и их оболочками, которые их импортируют. Попытка немедленно запустить системную команду pip (без применения каких-либо решения) все равно вызовет установленную apt системную версию сценария оболочки pip /usr/bin/pip3, а не ту, которая установлена как --user (~/.local/bin/pip*), в соответствии с системой ОС $ PATH, которая все еще установлена для запуска системной версии оболочки, но не ее библиотек ..
@George Это потому, что теперь на ~/.local/lib/python3.?/site-packages/pip установлен новый пакет pip, который имеет приоритет над системным подходящим в относительном импорте Python (локальный пользовательский сайт имеет приоритет над глобальными библиотеками). И поскольку более старая оболочка пытается использовать from pip import main, а не from pip._internal или его класс __main__ в более новой версии пакета pip, команда pip из сути не работает с ImportError: cannot import name 'main'. Таким образом, оба пункта могут сосуществовать (на диске), но функциональность исходного системного пункта будет "нарушена".
+1 для --user. pip install --user сделал это для меня. (У меня есть python 2.7, python 3.6 и python 3.7, все они установлены в Ubuntu 18.04 LTS.)
Я столкнулся с той же проблемой в своей системе Ubuntu 16.04. Мне удалось исправить это, переустановив pip с помощью следующей команды:
curl https://bootstrap.pypa.io/get-pip.py | sudo python3
Его преимущество заключается в том, что вы устанавливаете его из источника, и ни одно из вышеперечисленных не работает на чистом пустом Debian 9 (от моего провайдера выделенного сервера)
свернуть Интернет до суперпользователя, что может пойти не так!
То же самое произошло со мной на Pixelbook, использующем новый LXC (strech). Это решение очень похоже на принятое, с одной тонкой разницей, для меня это фиксированный pip3.
sudo python3 -m pip install --upgrade pip
Это подтолкнуло версию, и теперь она работает, как ожидалось.
Я нашел здесь ... Python.org: Убедитесь, что pip обновлен
Рекавери с python3 -m pip install --user pip==9.0.1 (или той версии, которая работала)
Что помогло мне исправить ошибку с использованием pip3, было:
sudo cp -v /usr/local/bin/pip3 /usr/bin/pip3
Все работает:
demon@UbuntuHP:~$ pip -V
pip 10.0.1 from /usr/local/lib/python3.5/dist-packages/pip (python 3.5)
demon@UbuntuHP:~$ pip2 -V
pip 10.0.1 from /home/demon/.local/lib/python2.7/site-packages/pip (python 2.7)
demon@UbuntuHP:~$ pip3 -V
pip 10.0.1 from /usr/local/lib/python3.5/dist-packages/pip (python 3.5)
Может быть, новая версия 10.0.1 pip не обновляет двоичный файл в / usr / bin? (что, кажется, не так)
Обновлено: такая же проблема возникает в Ubuntu 18.04. Лучшее решение, которое я нашел, - это символическая ссылка на двоичные файлы pip с /home/<user/.local/bin на /usr/local/bin или /usr/bin (в зависимости от ваших предпочтений) следующим образом:
ln -sv /home/<user>/.local/bin/pip /usr/local/bin/pip
ln -sv /home/<user>/.local/bin/pip2 /usr/local/bin/pip2
ln -sv /home/<user>/.local/bin/pip2.7 /usr/local/bin/pip2.7
ln -sv /home/<user>/.local/bin/pip3 /usr/local/bin/pip3
ln -sv /home/<user>/.local/bin/pip3.6 /usr/local/bin/pip3.6
ПРИМЕЧАНИЕ: замените <user> вашим текущим пользователем
Связанные версии (последние) находятся в:
/home/demon/.local/lib/python3.6/site-packages/pip (Python 3.6)
/home/demon/.local/lib/python2.7/site-packages/pip (python 2.7)
Это решило мою проблему. Остальные ответы - нет.
Однако вам действительно не следует возиться напрямую с файлами в /usr/bin. И ваш PATH неправильный, если /usr/local/bin не предшествует /usr/bin.
Двоичный файл pip не существует в /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 существуют и должны быть связаны / скопированы из: demon @ Bionic18: ~ / .local / bin $ ls pip pip2 pip2.7 pip3 pip3.6 По умолчанию для двоичного файла pip используется последняя версия, установленная в системе.
Приведенные выше команды не работали для меня, но они были очень полезны:
sudo apt purge python3-pip
sudo rm -rf '/usr/lib/python3/dist-packages/pip'
sudo apt install python3-pip
cd
cd .local/lib/python3/site-packages
sudo rm -rf pip*
cd
cd .local/lib/python3.5/site-packages
sudo rm -rf pip*
sudo pip3 install jupyter
Спасибо, это был единственный, который действительно сработал у меня после случайного обновления pip на Ubuntu 16.04 LTS.
from pip._internal import main
Отредактируйте пип-код из
sudo nano /usr/bin/pip3
Вы можете отредактировать ответ и уточнить его? Не очень понятно, как отредактировать файл /usr/bin/pip3 ...
Мы можем устранить ошибку, изменив файл pip.
Проверьте расположение файла:
$ which pip
path -> /usr/bin/pip
Перейдите в это место (/ usr / bin / пункт) и откройте терминал
Введите: $ sudo nano pip
Ты можешь видеть:
import sys
from pip import main
if __name__ == '__main__':
sys.exit(main())
Измените на:
import sys
from pip import __main__
if __name__ == '__main__':
sys.exit(__main__._main())
затем ctrl + o записываем изменения и выходим
Надеюсь, это подойдет !!
Внесение этих изменений не устранило проблему, но вернул исходный текст. ¯_ (ツ) _ / ¯
Я пробовал это, но получил AttributeError: module 'pip.__main__' has no attribute 'main'
Убедитесь, что вы написали _main () not main ()
в последней версии pip3, main() перемещен в pip._internal. Оператор импорта следует изменить на from pip._internal import main.
Этот ответ сработал для меня в pip 19.3.1 (python3.6.9, по умолчанию в WSL-Ubuntu) в Ubuntu 18.04 в Windows. @ Yossarian42, с какой версией pip3 вы это использовали?
Версия @icedwater pip3: 19.2.3
почему не только sudo nano `which pip`?
разрешается только за один шаг.
Я тоже столкнулся с этой проблемой, но это можно решить просто с помощью одной команды, не беспокоясь и не теряя времени, и я пробовал ее на нескольких системах, это самое чистое решение этой проблемы. И это:
Для 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.
У меня такая же проблема и я ее решил. Вот мое решение. Во-первых, когда я запускаю pip install something, ошибка возникает примерно так:
Traceback (most recent call last):
File "/usr/bin/pip3", line 9, in <module>
from pip import main
ImportError: cannot import name 'main'
Итак, я захожу в файл / usr / bin / и кошку 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())
И тут я думаю, что его не было в пути установки. Итак, я подключился к python3-pip, вот так:
cd /.local/lib/python3.5/site-packages/pip
P.S .: вы должны направить 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 и проблема исчезнет!
P.S .: pip3 или pip не имеют разницы в этой проблеме. Буду рад, если мое решение решит вашу проблему!
Как сказал @cryptoboy - проверьте, какую версию pip / python вы установили
demon@UbuntuHP:~$ pip -V
demon@UbuntuHP:~$ pip2 -V
demon@UbuntuHP:~$ pip3 -V
а затем проверьте наличие ненужных библиотек в папке .local / lib /.
Я сделал резервную копию настроек, когда переходил на новую версию Kubuntu, и в моем домашнем каталоге была папка .local / lib / python2.7 /. Установлен python 3.6. Я просто удалил старую папку и теперь все отлично работает!
Используйте python -m pip install вместо pip install
Пример:
python -m pip install --user somepackage
python3 -m pip install --user somepackage
Исполняемый файл pip (соответственно pip3) предоставляется вашим дистрибутивом (пакет python-pip в Ubuntu 16.04) и находится по адресу /usr/bin/pip.
Следовательно, он не обновляется вместе с самим пакетом pip при обновлении pip и может сломаться.
Если вы просто используете python -m pip напрямую, например как в:
python -m pip install --user somepackage
python3 -m pip install --user somepackage
он проходит по вашему пути Python, находит последнюю версию pip и запускает этот файл.
Он основан на том факте, что файл исполняется через import, но это очень стандартный тип интерфейса, и поэтому вероятность его поломки меньше, чем у более хакерского сценария Debian.
Тогда я рекомендую добавить к вашему .bashrc следующие псевдонимы:
pip() ( python -m pip "$@" )
pip3() ( python3 -m pip "$@" )
Файл Ubuntu 18.04 /usr/bin/pip3:
from pip import main
и предположительно main был удален из pip в какой-то момент, что и сломало работу.
Прерванная фиксация пипса выглядит так: 95bcf8c5f6394298035a7332c441868f3b0169f4 "Переместить все внутренние API в pip._internal", который вошел в пип 18.0.
Протестировано в Ubuntu 16.04 после обновления pip3 9.0.1 до 18.0.
Pyenv
В конечном итоге, однако, для серьезной разработки Python я бы просто рекомендовал вам установить собственный локальный Python с pyenv + virtualenv, что также позволит обойти эту ошибку Ubuntu: https://askubuntu.com/questions/682869/how-do-i-install-a-different-python-version-using-apt-get/1195153#1195153
после 5 часов поиска это сработало для меня. Я могу доставить вам цветок, если вы пришлете мне свой адрес. Спасибо.
Я использую систему, в которой есть sudo apt, но нет sudo pip. (И нет доступа su.) Я попал в такую же ситуацию, следуя совету pip:
You are using pip version 8.1.1, however 18.0 is available. You should consider upgrading via the 'pip install --upgrade pip' command.
Ни одно из других исправлений у меня не помогло, потому что у меня недостаточно прав администратора. Однако, прочитав это, я кое-что запомнил:
Итак, я обнаружил, что эта командная строка работает, чтобы вернуть меня туда, где я был. Если вы использовали версию, отличную от 8.1.1, вы, очевидно, захотите изменить эту часть строки.
python -m pip install --force-reinstall pip==8.1.1 --user
Это единственное, что у меня сработало, но сработало отлично!
Для Python версии 2.7 решение @Anthony работает идеально, изменив python3 на питон следующим образом:
sudo python -m pip uninstall pip && sudo apt install python-pip --reinstall
Вы можете решить эту проблему, переустановив pip.
Используйте одну из следующих команд командной строки для переустановки pip:
Python2:
python -m pip uninstall pip && sudo apt install python-pip --reinstall
Python3:
python3 -m pip uninstall pip && sudo apt install python3-pip --reinstall
Уловка и работает тоже
sudo -H pip install lxml
У меня была такая же ошибка, но python -m pip все еще работал, поэтому я исправил ее ядерной опцией sudo python -m pip install --upgrade pip. Это сделало это для меня.
В ubuntu 18.04.1 Bionic Beaver вам необходимо выйти и снова войти в систему (перезапуск не требуется), чтобы получить правильную среду.
$ sudo apt install python-pip
$ pip --version
pip 9.0.1 from /usr/lib/python2.7/dist-packages (python 2.7)
$ pip install --upgrade pip
$ pip --version
Traceback (most recent call last):
File "/usr/bin/pip", line 9, in <module>
from pip import main
ImportError: cannot import name main
$ exit
<login>
$ pip --version
pip 18.1 from /home/test/.local/lib/python2.7/site-packages/pip (python 2.7)
В Debian вам нужно сначала обновить apt ....
sudo apt-get update -qq
sudo apt-get install python-pip -qq
sudo pip install pip --upgrade --quiet
sudo pip2 install virtualenv --quiet
Если вы пропустите sudo apt-get update -qq, ваш пип станет поврежденным и отобразит ошибку «не удается найти основную».
Эта ошибка может быть разрешительной. Итак, протестируем выполнение команды с флагом -ЧАС:
sudo -H pip3 install numpy
вопрос очень четко говорит, что ImportError не ошибка разрешений
Как бы то ни было, у меня была проблема с pip (не pip2 или pip3):
$ pip -V
Traceback (most recent call last):
File "/usr/bin/pip", line 9, in <module>
from pip import main
ImportError: cannot import name main
$ pip2 -V
pip 8.1.1 from /usr/lib/python2.7/dist-packages (python 2.7)
$ pip3 -V
pip 8.1.1 from /usr/lib/python3/dist-packages (python 3.5)
Каким-то образом (не могу вспомнить, как) у меня в каталоге ~/.local был установлен питон. После того, как я удалил оттуда каталог pip, pip снова начал работать.
$ rm -rf /home/precor/.local/lib/python2.7/site-packages/pip
$ pip -V
pip 8.1.1 from /usr/lib/python2.7/dist-packages (python 2.7)
Используйте следующую команду перед выполнением любой команды pip
hash -d pip
Это будет работать
Не могли бы вы уточнить, как это поможет / + удалить снисходительные комментарии?
Что-то не так с пакетами, когда он генерирует файл / usr / bin / pip, вам нужно изменить импорт:
from pip import main
к
from pip._internal import main
Это решает проблему, я не уверен, почему она сгенерирована, но в следующей проблеме говорится кое-что:
После обновления pip 10 на pyenv «ImportError: невозможно импортировать имя 'main'»
Вы можете попробовать это:
sudo ln -sf $( type -P pip ) /usr/bin/pip
Хотя этот код может ответить на вопрос, было бы лучше включить некоторый контекст, объясняющий, как он работает и когда его использовать. Ответы, содержащие только код, в конечном итоге бесполезны.
Я также столкнулся с этой проблемой, когда хотел обновить систему pippip3 с 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 выполните следующую команду.
hash -r 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, чтобы исправить это окончательно
update-alternatives --install /bin/pip3 pip3 /usr/local/bin/pip3 30
и если вы хотите указать pip на pip3, тогда
update-alternatives --install /bin/pip pip /usr/local/bin/pip3 30
Это сработало для меня!
hash -r pip # or hash -d pip
Теперь удалите установленную версию pip и переустановите ее, используя следующие команды.
python -m pip uninstall pip # sudo
sudo apt install --reinstall python-pip
Если точка сломана, используйте:
python -m pip install --force-reinstall pip
Надеюсь, поможет!
Я использовал следующий код для загрузки модуля, который может нуждаться в установке, чтобы избежать этой ошибки (которую я тоже получил) - без проблем используя последнюю версию Python и последнюю версию pip.
try
from colorama import Fore, Back, Style
except:
!pip install colorama
from colorama import Fore, Back, Style
Дополнительное обсуждение на эта ссылка.