在Ubuntu 16.04.6 LTS上安装python3.7和pip3后出现Command '('lsb_release', '-a')' 出错问题的解决方法
在Ubuntu 16.04.6 LTS上安裝python3.7和pip3后出現Command '('lsb_release', '-a')' returned non-zero exit status 1問題解決方法
我在Ubuntu 16.04.6 LTS中將python3的版本由3.5升級到3.7.3,在安裝任何模塊時,比如執行下面的命令
sudo pip3 install you-get
就會出現下面的錯誤
Traceback (most recent call last):
? File "/usr/bin/pip3", line 10, in <module>
? ? sys.exit(main())
? File "/usr/local/python3/lib/python3.7/site-packages/pip/_internal/__init__.py", line 78, in main
? ? return command.main(cmd_args)
? File "/usr/local/python3/lib/python3.7/site-packages/pip/_internal/cli/base_command.py", line 228, in main
? ? timeout=min(5, options.timeout)
? File "/usr/local/python3/lib/python3.7/site-packages/pip/_internal/cli/base_command.py", line 93, in _build_session
? ? insecure_hosts=options.trusted_hosts,
? File "/usr/local/python3/lib/python3.7/site-packages/pip/_internal/download.py", line 344, in __init__
? ? self.headers["User-Agent"] = user_agent()
? File "/usr/local/python3/lib/python3.7/site-packages/pip/_internal/download.py", line 108, in user_agent
? ? zip(["name", "version", "id"], distro.linux_distribution()),
? File "/usr/local/python3/lib/python3.7/site-packages/pip/_vendor/distro.py", line 120, in linux_distribution
? ? return _distro.linux_distribution(full_distribution_name)
? File "/usr/local/python3/lib/python3.7/site-packages/pip/_vendor/distro.py", line 675, in linux_distribution
? ? self.version(),
? File "/usr/local/python3/lib/python3.7/site-packages/pip/_vendor/distro.py", line 735, in version
? ? self.lsb_release_attr('release'),
? File "/usr/local/python3/lib/python3.7/site-packages/pip/_vendor/distro.py", line 892, in lsb_release_attr
? ? return self._lsb_release_info.get(attribute, '')
? File "/usr/local/python3/lib/python3.7/site-packages/pip/_vendor/distro.py", line 550, in __get__
? ? ret = obj.__dict__[self._fname] = self._f(obj)
? File "/usr/local/python3/lib/python3.7/site-packages/pip/_vendor/distro.py", line 998, in _lsb_release_info
? ? stdout = subprocess.check_output(cmd, stderr=devnull)
? File "/usr/local/python3/lib/python3.7/subprocess.py", line 395, in check_output
? ? **kwargs).stdout
? File "/usr/local/python3/lib/python3.7/subprocess.py", line 487, in run
? ? output=stdout, stderr=stderr)
subprocess.CalledProcessError: Command '('lsb_release', '-a')' returned non-zero exit status 1.
原因是找不到lsb_release模塊
解決方法:
找到lsb_release模塊所在的目錄,將其復制到設置python3.7的系統模塊加載位置,也就是報錯處subprocess.py所在的目錄
/usr/local/python3/lib/python3.7/
依次執行下面的命令:
sudo find / -name 'lsb_release.py'
結果如下:
/usr/lib/python2.7/dist-packages/lsb_release.py
/usr/lib/python3/dist-packages/lsb_release.py
/usr/share/pyshared/lsb_release.py
sudo cp ?/usr/share/pyshared/lsb_release.py /usr/local/python3/lib/python3.7/
同時還需要將CommandNotFound所在的目錄復制到上面相同的目錄下面
sudo cp -fr /usr/lib/python3/dist-packages/CommandNotFound? ?/usr/local/python3/lib/python3.7/
將__pycache__子目錄中的文件名中帶有35名字的文件更改為37,見下面截圖
然后再次執行上面的命令就OK了。
需要說明的是,網上參考文獻[2]中說,執行下面的命令也可以解決這個問題:
sudo rm /usr/bin/lsb_release
我個人不贊成這么做,因為這破壞了系統的完整性,將系統中的這個命令刪去了。
注意:系統重啟后會造成gnome-terminal無法啟動的坑
參見下一篇博文修正:
https://blog.csdn.net/tao_627/article/details/91042809
參考文獻
[1].https://www.jianshu.com/p/3a2877edebe8
[2].https://www.cnblogs.com/longbigbeard/p/10028746.html
?
總結
以上是生活随笔為你收集整理的在Ubuntu 16.04.6 LTS上安装python3.7和pip3后出现Command '('lsb_release', '-a')' 出错问题的解决方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Go的日志模块glog调研笔记
- 下一篇: 在Ubuntu 16.04.6 LTS上