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
решил ее для меня.