gpt4 book ai didi

python - 从源代码安装 Python 3.6.3 后 lsb_release 不工作

转载 作者:IT王子 更新时间:2023-10-29 00:57:24 27 4
gpt4 key购买 nike

平台:ubuntu 17.04 服务器

ubuntu 17.04服务器安装包括python 2.7和python 3.5。我从源代码手动安装了 Python 3.6.3。但是,lsb_release -a 失败了:

root@birds:~# 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 from
#!/usr/bin/python3 -Es#!/usr/bin/python3.5 -Es它再次起作用。

root@birds:~# 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

root@birds:~# 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()

python 3

root@birds:~# 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()

有人知道怎么解决吗?谢谢。

最佳答案

解决方案:

sudo ln -s /usr/share/pyshared/lsb_release.py /usr/local/lib/python3.6/site-packages/lsb_release.py

解释:

我们可以在/usr/bin/lsb_release中看到

#!/usr/bin/python3 -Es

# lsb_release command for Debian
# (C) 2005-10 Chris Lawrence <lawrencc@debian.org>
# This package is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; version 2 dated June, 1991.
# This package is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this package; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
# 02110-1301 USA
from optparse import OptionParser
import sys
import os
import re

import lsb_release

关键步骤是import lsb_release,但问题是Python 3.6没有这个模块。

因此,您必须将 python3python3.5 覆盖到 python3.6。这就是您的 lsb_release 损坏的原因。

验证一下,我们可以在python3.6中看到:

➜  ~ python3.6 
Python 3.6.4 (default, Feb 6 2018, 16:57:12)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import lsb_release
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'lsb_release'

然后在 python3.5 中:

➜  ~ python3.5
Python 3.5.2 (default, Nov 23 2017, 16:37:01)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import lsb_release
>>> lsb_release.__file__
'/usr/lib/python3/dist-packages/lsb_release.py'

这个文件在哪里:

➜  ~ ll /usr/lib/python3/dist-packages/lsb_release.py
lrwxrwxrwx 1 root root 38 Jul 7 2016 /usr/lib/python3/dist-packages/lsb_release.py -> ../../../share/pyshared/lsb_release.py

因此,lsb_release 模块存在于python3.5 中,但不存在于python3.6 中。我们最终找到了它!

现在让我们通过添加到原始 lsb_release.py 文件的链接来修复它!

它对我有用!

关于python - 从源代码安装 Python 3.6.3 后 lsb_release 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46752279/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com