Я получил сообщение на своем терминале при установке программного обеспечения: You are using pip version 8.1.1, however version 10.0.0 is available. You should consider upgrading via the 'pip install --upgrade pip' command.
Итак, я обновил версию pip: $ pip install --upgrade pip
Теперь я получаю эту ошибку:
~$ pip install ipython
Traceback (most recent call last):
File "/usr/bin/pip", line 9, in <module>
from pip import main
ImportError: cannot import name main
Я выполнил ответ @catalinpopescu от ImportError: не могу импортировать имя main при запуске команды pip --version в Windows7 32 бит
Найти путь pip:
$ which pip
Измените файл (выберите свой любимый редактор):
$ sudo nano `which pip`
Затем измените строки @catalinpopescu: Комментировать/заменить строки:
from pip import main
sys.exit(main())
в
from pip import __main__
sys.exit(__main__._main())
Сразу же я обновляюсь до Pip Version 10.0.1, который, похоже, не имеет этой ошибки.
pip._internal
а затем снова изменены) или перезаписано при обновлении Ubuntu. Вся эта проблема заключается в том, что основной pip фактически никогда не поддерживал импорт из self, создавая конфликт с версией Debian при обновлении. Самый надежный подход - это удалить любой из 2 установленных пипсов (основной или дебиан); в противном случае простого повторного открытия нового сеанса Bash (терминала) может быть достаточно для устранения ошибки.
Идеальное решение (Ubuntu/Debian): $ python -m pip uninstall pip
, чтобы удалить новый пип 10 и сохранить ваш исправленный патч для Ubuntu/Debian. 8. Для общесистемной установки модулей используйте apt
везде, где это возможно (если вы не находитесь в virtualenv), подробнее об этом ниже. В более старых версиях Ubuntu/Debian всегда добавляйте флаг --user
при использовании pip за пределами virtualenvs (устанавливается в ~/.local/
, по умолчанию в python-pip и python3-pip с 2016 года).
Если вы все еще хотите использовать новый pip 10 исключительно, есть 3 быстрых метода:
bash
) - и появится пункт 10 (см. pip -V
). debian pip 8 остается установленным, но сломан; или$ hash -d pip && pip -V
, чтобы обновить path pathname в $PATH. debian pip 8 остается установленным, но сломан; или$ sudo apt remove python-pip && hash -d pip
(для Python 3 это python3-pip) - полностью удалить debian pip 8, в пользу вашего нового pip 10. Примечание.. Вам всегда нужно добавить флаг --user
в 10-разрядный комплект, не содержащий debian, если вы не находитесь в virtualenv! Ubuntu/Debian на самом деле не поддерживает ваше использование pip 10 во всей системе, за пределами virtualenv. Никогда sudo pip
!
Детали:
https://github.com/pypa/pip/issues/5221#issuecomment-382069604
https://github.com/pypa/pip/issues/5240#issuecomment-381673100
Ubuntu 16.04 с Python 2.7.12
Введение:
По иронии судьбы, несмотря на то, что сам предлагал сам pip сделать такое обновление с помощью команды pip install --upgrade pip
явно в терминале (ugh!), Обновление не рекомендуется в расфасованных дистрибутивах GNU/Linux. Ubuntu обычно ожидает, используя диспетчер пакетов APT для любых общесистемных обновлений/установок модуля Python (включая сам протокол), например: $ sudo apt-get update
(resync Ubuntu файлы индекса пакетов из источников) $ apt-cache search <python-package-name>
(полный текстовый поиск по всем доступным пакетам) $ apt-cache show <python-package-name>
(отображает описание пакета) $ sudo apt-get install python-numpy python-scipy python-matplotlib
(легко устанавливает тяжелые модули для науки о данных, автоматически разрешая все системные зависимости) $ sudo apt-get install ipython
(устанавливает IPython-ноутбук, который вы искали) $ sudo apt-get install python-pip
(устанавливает/обновляет протокол до последней версии, доступной в репозитории Ubuntu - обычно немного отстает от pypi.org, но это не имеет значения)
Если вам когда-либо понадобилось использовать команду pip install
на Ubuntu/Debian вместо apt-get install
, убедитесь, что она запущена изолированной и не меняет стандартные по умолчанию пакеты Python по умолчанию (никогда не используйте sudo with pip) - подробнее об этом ниже.
ImportError: невозможно импортировать имя main
Ошибка вызвана командой pip install --upgrade pip
: она устанавливает последнюю версию версии 10 вместе с версией протокола Ubuntu по умолчанию из пакета python-pip
debian из дистрибутива ОС (установка системы Python), полностью минуя подсистему Ubuntu apt
. Он разбивает Ubuntu по умолчанию: debian-patched launcher script из python-pip (установленный в /usr/bin/pip *) пытается импортировать main() из вашей недавно установленной библиотеки pip 10, но с другой путь импорта, поэтому он терпит неудачу.
Эта ошибка более подробно обсуждается в уровне разработчика контрольного пакета вопросов, включая несколько предлагаемых решений, например:
Команда $ hash -d pip
: при вызове hash
полный путь к пипу определяется поиском каталогов в $PATH и запоминается. Любое ранее запоминающееся имя пути отбрасывается. Опция -d
заставляет оболочку "забыть" запоминаемое местоположение данного имени пакета; или
Аналогично, вы можете просто повторно открыть новый сеанс bash (новая вкладка терминала), чтобы обновить имя пути в $PATH; или
Вы можете просто использовать команду pip2
(или pip3
для Python 3) вместо pip
для вызова более старого установленного системой пика script /usr/bin/pip2
, тогда как любой пусковой пуск script расположенный в $HOME/.local/bin
dir (pip, pip2, pip2.7), запустит вашу новую версию, установленную пользователем 10,
Вы также можете использовать версии Python в сочетании с переключателем -m
для запуска соответствующей копии пипа, например: $ python2 -m pip install --user SomePackage
# default Python 2 $ python2.7 -m pip install --user SomePackage
# в частности Python 2.7
Это удобно, если у вас есть несколько версий Python и требуется расширение от PyPI для конкретной версии Python. Переключатель --user
требуется только тогда, когда пип используется за пределами virtualenv.
Или удалите один из двух пипсов - либо пользователь установленили система установлена - чтобы разрешить конфликт: $ python -m pip uninstall pip
- удалить ваш вручную установленный пипс в пользу ранее установленной версии Ubuntu от пакета debian python-pip (python3-pip для Python 3); он немного старше, но он находит и устанавливает последние модули из PyPI просто отлично, и по умолчанию имеет команду рабочего пика в $PATH; или $ sudo apt-get remove python-pip
- удалить удаленный Ubuntu пипс в пользу вашего последнего пипса 10; если он недоступен через короткую команду pip
, просто добавьте каталог $HOME/.local/bin
в переменную среды $PATH, чтобы использовать команду pip
(см. выше).
Примечание: Ubuntu 16.04 pip v8.1.1, а последняя версия v.10.0.1 производит точно такие же результаты поиска индекса PyPI и может вывести те же версии модулей;
Наконец, вы можете вообще игнорировать оба пипса в пользу APT и устанавливать пакеты Python из всей системы Ubuntu с помощью:
$ apt search <python-package>
#, например. python- pandas $ apt show <python-package>
#, например. питон-колба $ sudo apt install <python-package>
Пакеты с префиксом python-
предназначены для Python 2; с python3-
для Python 3.
Установка через apt-get может быть тем, что вам нужно, на самом деле, python-пакеты из репозитория Ubuntu предпочитают, когда это возможно, особенно в случае тяжелых системных зависимостей или при использовании для всей системы. Конечно, количество пакетов Python в репозитории Ubuntu (несколько тысяч!) Относительно меньше по сравнению с PyPI (и имеет только одну их версию), потому что любой репозиторий ОС немного отстает от версий PyPI. Но потенциал APT заключается в том, что все пакеты, предоставленные Ubuntu, прошли интеграционное тестирование в Ubuntu, а apt-get быстро разрешает большие зависимости, такие как C-расширения, автоматически. Вы всегда будете получать какие-либо требуемые системные библиотеки как часть установки apt, но с помощью pip у вас нет таких гарантий.
Однако APT не может быть вариантом, если вам действительно нужна последняя (или некоторая более старая) версия пакета или когда ее можно найти только в PyPI или когда необходимо изолировать модули; то пип - действительно более подходящий инструмент. Если вы используете команду pip install
на Ubuntu вместо apt-get install
, убедитесь, что она работает в изолированной виртуальной среде разработки, например virtualenv (sudo apt-get install python-virtualenv
) или встроенный модуль venv
(доступен только в python3) или на уровне пользователя (параметр pip install --user
), но не общесистемный (никогда sudo pip
!).
Примечание: Следует избегать использования команды sudo pip
(с правами доступа root), поскольку она вмешивается в работу системного пакета manager (apt) и может повлиять на Ubuntu OS компоненты, когда системный модуль python неожиданно обновлен, особенно зависимостями от другого пакета pip. Рекомендуется не использовать Pip для изменения общесистемных пакетов Python, поскольку они управляются с помощью apt-get
на Ubuntu.
попытайтесь обновить системный протокол
sudo pip install --upprade pip
pip install --upprade pip
это может быть полезно