pip показывает ошибку 'lsb_release -a' возвращает ненулевой статус выхода 1

Я пытаюсь установить пакеты с помощью pip, и это бросает ошибку.

Команда, которую я использовал,

sudo pip install selenium

Ошибка, которую она показывает,

Exception:
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/dist-packages/pip/basecommand.py", line 215, in main
    status = self.run(options, args)
  File "/usr/local/lib/python2.7/dist-packages/pip/commands/install.py", line 272, in run
    with self._build_session(options) as session:
  File "/usr/local/lib/python2.7/dist-packages/pip/basecommand.py", line 72, in _build_session
    insecure_hosts=options.trusted_hosts,
  File "/usr/local/lib/python2.7/dist-packages/pip/download.py", line 329, in __init__
    self.headers["User-Agent"] = user_agent()
  File "/usr/local/lib/python2.7/dist-packages/pip/download.py", line 93, in user_agent
    from pip._vendor import distro
  File "/usr/local/lib/python2.7/dist-packages/pip/_vendor/distro.py", line 1050, in <module>
    _distro = LinuxDistribution()
  File "/usr/local/lib/python2.7/dist-packages/pip/_vendor/distro.py", line 594, in __init__
    if include_lsb else {}
  File "/usr/local/lib/python2.7/dist-packages/pip/_vendor/distro.py", line 933, in _get_lsb_release_info
    raise subprocess.CalledProcessError(code, cmd, stdout)
CalledProcessError: Command 'lsb_release -a' returned non-zero exit status 1
Traceback (most recent call last):
  File "/usr/local/bin/pip", line 11, in <module>
    sys.exit(main())
  File "/usr/local/lib/python2.7/dist-packages/pip/__init__.py", line 233, in main
    return command.main(cmd_args)
  File "/usr/local/lib/python2.7/dist-packages/pip/basecommand.py", line 251, in main
    timeout=min(5, options.timeout)) as session:
  File "/usr/local/lib/python2.7/dist-packages/pip/basecommand.py", line 72, in _build_session
    insecure_hosts=options.trusted_hosts,
  File "/usr/local/lib/python2.7/dist-packages/pip/download.py", line 329, in __init__
    self.headers["User-Agent"] = user_agent()
  File "/usr/local/lib/python2.7/dist-packages/pip/download.py", line 93, in user_agent
    from pip._vendor import distro
  File "/usr/local/lib/python2.7/dist-packages/pip/_vendor/distro.py", line 1050, in <module>
    _distro = LinuxDistribution()
  File "/usr/local/lib/python2.7/dist-packages/pip/_vendor/distro.py", line 594, in __init__
    if include_lsb else {}
  File "/usr/local/lib/python2.7/dist-packages/pip/_vendor/distro.py", line 933, in _get_lsb_release_info
    raise subprocess.CalledProcessError(code, cmd, stdout)
subprocess.CalledProcessError: Command 'lsb_release -a' returned non-zero exit status 1

Я искал везде, но решения этой проблемы нет. Он начал вести себя так недавно. Кроме того, программа обновления программного обеспечения перестала работать. Не уверен, связано ли это с этим. Я использую Ubuntu 14.04 LTS и python 2.X

Ответ 1

Аааа, классическая проблема lsb_release. Я боролся с этой проблемой много раз. Проблема в том, что ваша реализация Python по умолчанию пытается использовать Python 3, но lsb_release требует Python 2. Чтобы решить эту проблему, выполните следующие действия:

  • Откройте /usr/bin/lsb_release (убедитесь, что вы используете sudo или откройте как root!)
  • Отредактируйте первую строку, чтобы она была #! /usr/bin/python2.7
  • Сохраните файл

Теперь вы можете снова использовать pip, и все должно быть в порядке.

ОБНОВЛЕНИЕ Май 2019 г.: более новые версии Linux поставляются с Python3 по умолчанию. Как отмечено в комментариях здесь, вам может понадобиться использовать конкретную версию Python 3.

Ответ 2

У меня была такая же проблема с учетной записью с общим хостингом, которая очень ограничивает (я устанавливал python и pip только для моего пользователя). Их lsb_release -a возвращает что-то нестандартное, и я не могу его изменить. Я решил проблему, отредактировав distro.py (в вашем случае: /usr/local/lib/python2.7/dist-packages/pip/_vendor/distro.py) и изменив параметр по умолчанию __init__. В моей версии это было на линии 545. Фрагмент:

def __init__(self,
    include_lsb=True,
    os_release_file='',
    distro_release_file=''):

Просто измените include_lsb=True на include_lsb=False.

Ответ 3

Я смог исправить это сообщение об ошибке с помощью unset _PYTHON_SYSCONFIGDATA_NAME. Это предотвратило попытку lsb_release импортировать $_PYTHON_SYSCONFIGDATA_NAME. После этого программа pip install снова работала. Это исправление применяется, если вы запустите lsb_release -a и получите ModuleNotFoundError: No module named '_sysconfigdata_x86_64_conda_cos6_linux_gnu'.

Ответ 4

после установки python3.7.3 и изменения символической ссылки python3, чтобы он указывал на нее, у меня возникла эта ошибка. Исправлено путем изменения первой строки на

! /usr/bin/python3.5 -Es

оригинал был почти что... пришлось добавить только ".5".

Ответ 5

Я думаю, что это проблема со старыми скомпилированными файлами python, которые сталкиваются с обновлением Ubuntu.

Для меня решением было удалить следующие.pyc файлы

sudo rm /usr/lib/python2.7/dist-packages/*.pyc

Ответ 6

Мне пришлось удалить python3-dev и python2.7-dev из-за конфликта между установленным miniconda python3.4 и моим python3.6, скомпилированным из исходного кода на Raspberry pi (Raspbian Stretch with Arm71), а затем переустановить pip и pip3:

sudo apt-get -y remove python2.7-dev python3-dev
wget https://bootstrap.pypa.io/get-pip.py
sudo python get-pip.py
sudo python3 get-pip.py

Ответ 7

После установки python из исходного кода на Debian-9 (однако я установил эти пакеты) у меня возникла та же проблема. Вот как я это решил:

/usr/local/bin/python3.x -m venv <my_venv>
. <my_venv>/bin/activate
easy_install pip
easy_install setuptools
easy_install wheel
pip install -U setuptools wheel pip

Ответ 8

Я увидел ту же ошибку и sudo rm /usr/bin/lsb_release решил ее для меня.