ubuntu下安装python3.6及以上版本出现pip3报错等问题

在ubuntu系统下,系统默认python2.7和python3.5,但需要使用更高的python版本的pip3时可能遇到的错误

问题一:

Traceback (most recent call last):
  File "/usr/bin/pip3", line 9, in <module>
    from pip import main
ImportError: cannot import name 'main'

解决办法:

sudo vim /usr/bin/pip3

修改:

from pip import main
if __name__ == '__main__':
    sys.exit(main())

为:

from pip import __main__
if __name__ == '__main__':
    sys.exit(__main__._main())

注意:单下划线和双下划线

问题二:

使用pip3安装任何模块时的类似报错:

Traceback (most recent call last):
  File "/usr/bin/pip3", line 11, in <module>
    sys.exit(__main__._main())
  File "/usr/bin/python3.6/lib/python3.6/site-packages/pip/_internal/__init__.py", line 246, in main
    return command.main(cmd_args)
  File "/usr/bin/python3.6/lib/python3.6/site-packages/pip/_internal/basecommand.py", line 264, in main
    timeout=min(5, options.timeout)) as session:
  File "/usr/bin/python3.6/lib/python3.6/site-packages/pip/_internal/basecommand.py", line 81, in _build_session
    insecure_hosts=options.trusted_hosts,
  File "/usr/bin/python3.6/lib/python3.6/site-packages/pip/_internal/download.py", line 338, in __init__
    self.headers["User-Agent"] = user_agent()
  File "/usr/bin/python3.6/lib/python3.6/site-packages/pip/_internal/download.py", line 101, in user_agent
    zip(["name", "version", "id"], distro.linux_distribution()),
  File "/usr/bin/python3.6/lib/python3.6/site-packages/pip/_vendor/distro.py", line 120, in linux_distribution
    return _distro.linux_distribution(full_distribution_name)
  File "/usr/bin/python3.6/lib/python3.6/site-packages/pip/_vendor/distro.py", line 634, in linux_distribution
    self.version(),
  File "/usr/bin/python3.6/lib/python3.6/site-packages/pip/_vendor/distro.py", line 688, in version
    self.lsb_release_attr('release'),
  File "/usr/bin/python3.6/lib/python3.6/site-packages/pip/_vendor/distro.py", line 836, in lsb_release_attr
    return self._lsb_release_info.get(attribute, '')
  File "/usr/bin/python3.6/lib/python3.6/site-packages/pip/_vendor/distro.py", line 522, in __get__
    ret = obj.__dict__[self._fname] = self._f(obj)
  File "/usr/bin/python3.6/lib/python3.6/site-packages/pip/_vendor/distro.py", line 933, in _lsb_release_info
    stdout = subprocess.check_output(cmd, stderr=devnull)
  File "/usr/bin/python3.6/lib/python3.6/subprocess.py", line 336, in check_output
    **kwargs).stdout
  File "/usr/bin/python3.6/lib/python3.6/subprocess.py", line 418, in run
    output=stdout, stderr=stderr)
subprocess.CalledProcessError: Command '('lsb_release', '-a')' returned non-zero exit status 1.

扫描二维码关注公众号,回复: 3867242 查看本文章

解决办法:

sudo vim /usr/bin/lsb_release

修改第一行,指明python的版本号,若安装的是python3.6则修改:

#!/usr/bin/python3

为:

#!/usr/bin/python3.6

猜你喜欢

转载自blog.csdn.net/u012114438/article/details/83578113