Вопрос или проблема
После обновления pip3 с помощью $ pip3 install --upgrade pip
pip3 перестал работать. И выдает следующую ошибку:
Трассировка (последний вызов последний):
Файл "/usr/bin/pip3", строка 9, в <модуле>
из pip импортировать main
ImportError: невозможно импортировать имя 'main'
Та же проблема возникает снова, даже после удаления pip3 и его переустановки.
Где-то кто-то предложил изменить from pip import main
на from pip._internal import main
. Но все равно это не сработало.
Ваш системный исполняемый файл pip3 по-прежнему старый и находится по адресу /usr/bin/pip3:
$ ll `which pip3`
-rwxr-xr-x 1 root root 293 Май 16 2018 /usr/bin/pip3*
Попробуйте обновить с использованием sudo:
$ sudo pip3 install --upgrade pip
Тогда ваш обновленный исполняемый файл pip3 должен быть помещен в /usr/local/bin/pip3:
$ ll `which pip3`
-rwxr-xr-x 1 root root 216 Янв 8 20:46 /usr/local/bin/pip3*
и будет использоваться по умолчанию.
Ответ или решение
Проблема с pip3 после обновления до версии 18.1
После обновления pip3 с помощью команды:
$ pip3 install --upgrade pip
Вы столкнулись с ошибкой, которая выглядит следующим образом:
Traceback (most recent call last):
File "/usr/bin/pip3", line 9, in <module>
from pip import main
ImportError: cannot import name 'main'
Данная ошибка указывает на проблему с импортом модуля в обновленной версии pip. Эта ситуация часто возникает после обновления, когда система по-прежнему ссылается на устаревшую версию pip, которая не совместима с новой структурой пакета.
Причина проблемы
В версии pip 18.1 и далее произошли изменения в структуре кода, в результате чего запись:
from pip import main
больше не работает. Вместо этого нужно использовать:
from pip._internal import main
Однако, если изменение не решает проблему, это может свидетельствовать о том, что система использует неверную версию pip3.
Решение проблемы
-
Проверка и удаление старого pip:
Вы уже упомянули, что удаляли pip3, но рекомендуется убедиться, что старые версии действительно удалены. Для этого вы можете выполнить следующие команды:$ which pip3 $ sudo rm -rf /usr/bin/pip3
-
Установка pip с правами суперпользователя:
Попробуйте выполнить установку pip3 с правами администратора, чтобы убедиться, что новая версия будет установлена в правильное место. Сделайте это следующим образом:$ sudo pip3 install --upgrade pip
После этого новое исполняемое файл pip3 должен находиться по пути
/usr/local/bin/pip3
. -
Проверка пути pip3:
Убедитесь, что ваш системный путь (PATH) настроен так, чтобы при вызовеpip3
использовалась новая версия. Выполните команду:$ ll `which pip3`
Вы должны увидеть, что версия файла устарела и больше не соответствует старой версии. Убедитесь, что он указывает на:
/usr/local/bin/pip3
-
Проверка последней версии pip:
После выполнения вышеуказанных действий проверьте установленную версию pip3:$ pip3 --version
Если все было сделано правильно, вы должны увидеть актуальную версию pip.
Дополнительная диагностика
Если проблема сохраняется, рассмотрите следующие дополнительные шаги:
-
Очистка кеша pip:
Иногда кешированные пакеты могут вызывать ошибки. Очистите кеш командой:$ pip3 cache purge
-
Создание виртуального окружения:
Если вы работаете в проекте, попробуйте создать изолированное окружение с помощьюvenv
:$ python3 -m venv myenv $ source myenv/bin/activate $ pip install --upgrade pip
Это поможет убедиться, что вы используете чистую среду без конфликтующих пакетов.
Заключение
Ваша проблема с pip3 и ошибкой при обновлении, скорее всего, связана с тем, что система по-прежнему ссылается на устаревшую версию pip. Убедитесь, что вы удалили старую версию, выполните установку с правами суперпользователя, а затем проверьте, что ваш системный путь настроен верно. Если вы выполните все предложенные шаги, ваша работа с pip3 должна восстановиться.