Невозможно импортировать ошибку 'name' с pip3 при чистой установке Ubuntu - PullRequest
0 голосов
/ 01 мая 2020

У меня чистая установка Ubuntu 16.04 на экземпляре EC2. Я пошел дальше и обновил версию Python с 3.5 до 3.7. К сожалению, похоже, что pip3 не работает. Несмотря на то, что pip3 определенно установлен:

~$ which pip3
/usr/bin/pip3

, когда я пытаюсь что-то сделать с pip3, он показывает ту же ошибку:

~$ pip3 --version
Traceback (most recent call last):
  File "/usr/bin/pip3", line 9, in <module>
    from pip import main
ImportError: cannot import name 'main' from 'pip' (/usr/local/lib/python3.7/site-packages/pip/__init__.py)

Я попытался обновить pip через

sudo python3 -m pip install --upgrade pip

и получение пункта от источника через

curl https://bootstrap.pypa.io/get-pip.py | sudo python3

Ни одна из них не устранила проблему. Есть идеи о том, что может происходить? Мне удалось воспроизвести ошибку, выполнив обновление до 3.7 на чистом сервере EC2, хотя я также делал то же самое в другом экземпляре EC2 при обновлении до 3.7. Я предполагаю, что в этом случае это связано с Ubuntu - есть ли причина, по которой 3.7 не очень хорошо играет с моим пипом?

Редактировать: Рекомендуется переустановить пип через

 python3 -m pip uninstall pip && sudo apt install python3-pip --reinstall

Это приводит к следующей трассировке ошибки:

ERROR: Exception:
Traceback (most recent call last):
  File "/usr/local/lib/python3.7/site-packages/pip/_internal/cli/base_command.py", line 188, in main
    status = self.run(options, args)
  File "/usr/local/lib/python3.7/site-packages/pip/_internal/commands/uninstall.py", line 48, in run
    with self._build_session(options) as session:
  File "/usr/local/lib/python3.7/site-packages/pip/_internal/cli/base_command.py", line 108, in _build_session
    index_urls=self._get_index_urls(options),
  File "/usr/local/lib/python3.7/site-packages/pip/_internal/download.py", line 559, in __init__
    self.headers["User-Agent"] = user_agent()
  File "/usr/local/lib/python3.7/site-packages/pip/_internal/download.py", line 144, in user_agent
    zip(["name", "version", "id"], distro.linux_distribution()),
  File "/usr/local/lib/python3.7/site-packages/pip/_vendor/distro.py", line 122, in linux_distribution
    return _distro.linux_distribution(full_distribution_name)
  File "/usr/local/lib/python3.7/site-packages/pip/_vendor/distro.py", line 677, in linux_distribution
    self.version(),
  File "/usr/local/lib/python3.7/site-packages/pip/_vendor/distro.py", line 737, in version
    self.lsb_release_attr('release'),
  File "/usr/local/lib/python3.7/site-packages/pip/_vendor/distro.py", line 899, in lsb_release_attr
    return self._lsb_release_info.get(attribute, '')
  File "/usr/local/lib/python3.7/site-packages/pip/_vendor/distro.py", line 552, in __get__
    ret = obj.__dict__[self._fname] = self._f(obj)
  File "/usr/local/lib/python3.7/site-packages/pip/_vendor/distro.py", line 1012, in _lsb_release_info
    stdout = subprocess.check_output(cmd, stderr=devnull)
  File "/usr/local/lib/python3.7/subprocess.py", line 411, in check_output
    **kwargs).stdout
  File "/usr/local/lib/python3.7/subprocess.py", line 512, in run
    output=stdout, stderr=stderr)
subprocess.CalledProcessError: Command '('lsb_release', '-a')' returned non-zero exit status 1.

Ответы [ 2 ]

0 голосов
/ 01 мая 2020

Разработчики пипов говорят очень четко :

Только когда-либо используйте ваш системный менеджер пакетов для обновления системного пипа

pip3 может быть настроен для старого python. Вместо этого используйте pythonx.x -m pip, чтобы убедиться, что вы устанавливаете пакеты для нужной версии python.

Я предлагаю установить pip официальным способом . Пакеты Deb pip будут иметь очень старый pip, и их сложно обновить, ничего не нарушая. Если вы установили что-то вроде python3.7-pip, я предлагаю удалить его.

PS: Я надеюсь, что под обновлением python вы подразумеваете установку 3.7 помимо системы 3.5, потому что замена python3 .5, скорее всего, что-то сломает в вашем OS.

0 голосов
/ 01 мая 2020

Возможно, системный пип поврежден, возможно попробуйте удалить / переустановить пип через python3:

python3 -m pip uninstall pip && sudo apt install python3-pip --reinstall
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...