Помилка після оновлення pip: cannot import name 'main'
Щоразу, коли я намагаюся встановити будь-який пакунок за допомогою 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())
Раніше він працював нормально, я не впевнений, чому він видає цю помилку. Я шукав про цю помилку, але не можу знайти нічого, щоб її виправити.
Будь ласка, дайте мені знати, якщо вам потрібна додаткова інформація, я оновлю своє запитання.
443
3
Ви, мабуть, ненавмисно оновили ваш системний pip (можливо, за допомогою чогось на кшталт sudo pip install pip --upgrade)
pip 10.x налаштовує розташування своїх внутрішніх компонентів. Команда
pip3
, яку ви бачите, надається вашим супровідником пакунків (ймовірно, на основі debian?) і не є файлом, яким керує pip.Ви можете прочитати більше про це на pip's issue tracker.
Можливо, ви захочете не оновлювати ваш системний pip, а скористатись віртуальною командою virtualenv.
Щоб відновити бінарний файл
pip3
вам потрібно виконати sudo python3 -m pip uninstall pip && sudo apt install python3-pip --reinstall.Якщо ви хочете продовжити на &quo ;непідтримуваної території&quo ; (оновлення системного пакета поза системного менеджера пакетів), то, ймовірно, можна обійтися
python3 -m pip ...
замістьpip3
.Перевірте, чи не закешований pip по іншому шляху, для цього викличте $ which pip і перевірте, чи шлях відрізняється від шляху, вказаного в помилці, якщо це так, то запустіть його:
Коли кеш буде очищено, pip знову запрацює. посилання: http://cheng.logdown.com/posts/2015/06/14/-usr-bin-pip-no-such-file-or-directory
Я використовую sudo apt remove python3-pip, тоді
pip
працює.