платформа: сервер Ubuntu 17.04
Установка сервера Ubuntu 17.04 включает в себя Python 2.7 и Python 3.5. Я установил Python 3.6.3 вручную из исходного кода. Однако lsb_release -a
не удалось:
# lsb_release -a
Traceback (most recent call last):
File "/usr/bin/lsb_release", line 25, in <module>
import lsb_release
ModuleNotFoundError: No module named 'lsb_release'
Но если я изменю первую строку файла lsb_release
из
#!/usr/bin/python3 -Es
в
#!/usr/bin/python3.5 -Es
это работает снова.
# lsb_release -a
LSB Version: core-9.20160110ubuntu5-amd64:core-9.20160110ubuntu5-noarch:security-9.20160110ubuntu5-amd64:security-9.20160110ubuntu5-noarch
Distributor ID: Ubuntu
Description: Ubuntu 17.04
Release: 17.04
Codename: zesty
Вот путь поиска модуля:
# python3.5
Python 3.5.3 (default, Sep 14 2017, 22:58:41)
[GCC 6.3.0 20170406] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.path
['', '/usr/lib/python35.zip', '/usr/lib/python3.5', '/usr/lib/python3.5/plat-x86_64-linux-gnu', '/usr/lib/python3.5/lib-dynload', '/usr/local/lib/python3.5/dist-packages', '/usr/lib/python3/dist-packages']
>>> import lsb_release
>>> exit()
# python3
Python 3.6.3 (default, Oct 14 2017, 20:35:42)
[GCC 6.3.0 20170406] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.path
['', '/usr/local/lib/python36.zip', '/usr/local/lib/python3.6', '/usr/local/lib/python3.6/lib-dynload', '/root/.local/lib/python3.6/site-packages', '/usr/local/lib/python3.6/site-packages']
>>> import lsb_release
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'lsb_release'
>>> exit()
Кто-нибудь знает как это исправить?
readlink -f /usr/bin/python3
и/usr/bin/python3 --version
?Ответы:
Решение:
Объясните:
Мы можем видеть в
/usr/bin/lsb_release
Ключевым шагом является
import lsb_release
, но проблема в томPython 3.6
, не имеет этого модуля.Итак, вы, должно быть, переопределены
python3
сpython3.5
доpython3.6
. Вот почему вашlsb_release
сломан.Чтобы убедиться в этом, мы можем увидеть в
python3.6
:затем в
python3.5
:где находится этот файл:
Таким образом, этот модуль
lsb_release
существует в,python3.5
но не существует вpython3.6
. И мы находим это в конце концов!Теперь давайте исправим это, добавив ссылку на оригинальный
lsb_release.py
файл!Меня устраивает!
источник