【问题标题】:Cannot import 'name' error with pip3 on clean Ubuntu install无法在干净的 Ubuntu 安装上使用 pip3 导入“名称”错误
【发布时间】:2020-08-16 07:55:53
【问题描述】:

我在 EC2 实例上全新安装了 ubuntu 16.04。我已经将 Python 版本从 3.5 升级到了 3.7。不幸的是,这似乎使 pip3 不起作用。尽管肯定安装了 pip3:

~$ which pip3
/usr/bin/pip3

当我尝试用 pip3 做任何事情时,它显示相同的错误:

~$ pip3 --version
Traceback (most recent call last):
  File "/usr/bin/pip3", line 9, in <module>
    from pip import main
ImportError: cannot import name 'main' from 'pip' (/usr/local/lib/python3.7/site-packages/pip/__init__.py)

我已经尝试通过

升级 pip
sudo python3 -m pip install --upgrade pip

并通过

从源中获取 pip
curl https://bootstrap.pypa.io/get-pip.py | sudo python3

两者都没有解决问题。关于可能发生的事情有什么想法吗?我已经设法通过在干净的 EC2 服务器上升级到 3.7 来复制错误,尽管在升级到 3.7 时我也在另一个 EC2 实例上遇到了同样的问题。在这种情况下,我猜这与 ubuntu 有关——3.7 与我的 pip 不能很好地配合是否有原因?

编辑: 建议通过

重新安装 pip
 python3 -m pip uninstall pip && sudo apt install python3-pip --reinstall

这会产生以下错误跟踪:

ERROR: Exception:
Traceback (most recent call last):
  File "/usr/local/lib/python3.7/site-packages/pip/_internal/cli/base_command.py", line 188, in main
    status = self.run(options, args)
  File "/usr/local/lib/python3.7/site-packages/pip/_internal/commands/uninstall.py", line 48, in run
    with self._build_session(options) as session:
  File "/usr/local/lib/python3.7/site-packages/pip/_internal/cli/base_command.py", line 108, in _build_session
    index_urls=self._get_index_urls(options),
  File "/usr/local/lib/python3.7/site-packages/pip/_internal/download.py", line 559, in __init__
    self.headers["User-Agent"] = user_agent()
  File "/usr/local/lib/python3.7/site-packages/pip/_internal/download.py", line 144, in user_agent
    zip(["name", "version", "id"], distro.linux_distribution()),
  File "/usr/local/lib/python3.7/site-packages/pip/_vendor/distro.py", line 122, in linux_distribution
    return _distro.linux_distribution(full_distribution_name)
  File "/usr/local/lib/python3.7/site-packages/pip/_vendor/distro.py", line 677, in linux_distribution
    self.version(),
  File "/usr/local/lib/python3.7/site-packages/pip/_vendor/distro.py", line 737, in version
    self.lsb_release_attr('release'),
  File "/usr/local/lib/python3.7/site-packages/pip/_vendor/distro.py", line 899, in lsb_release_attr
    return self._lsb_release_info.get(attribute, '')
  File "/usr/local/lib/python3.7/site-packages/pip/_vendor/distro.py", line 552, in __get__
    ret = obj.__dict__[self._fname] = self._f(obj)
  File "/usr/local/lib/python3.7/site-packages/pip/_vendor/distro.py", line 1012, in _lsb_release_info
    stdout = subprocess.check_output(cmd, stderr=devnull)
  File "/usr/local/lib/python3.7/subprocess.py", line 411, in check_output
    **kwargs).stdout
  File "/usr/local/lib/python3.7/subprocess.py", line 512, in run
    output=stdout, stderr=stderr)
subprocess.CalledProcessError: Command '('lsb_release', '-a')' returned non-zero exit status 1.

【问题讨论】:

  • 尝试python3.7 -m pip,确保您的文件夹中没有任何名为pip的内容。

标签: python python-3.x ubuntu pip


【解决方案1】:

Pip 开发者say very clearly:

只使用你的系统包管理器来升级系统 pip

pip3 可以为旧 python 配置。请改用pythonx.x -m pip,这样您就可以确定您正在为正确的python 版本安装包。

我建议安装 pip the official way 。 Deb pip 包将具有非常旧的 pip,并且很难在不破坏任何内容的情况下更新它们。如果你安装了python3.7-pip 之类的东西,我建议删除它。

PS:我希望升级python意味着除了系统3.5之外还安装3.7,因为替换python3.5可能会破坏你的操作系统。

【讨论】:

    【解决方案2】:

    可能是系统pip已经损坏,可以尝试通过python3卸载/重新安装pip:

    python3 -m pip uninstall pip && sudo apt install python3-pip --reinstall
    

    【讨论】:

    • 返回错误(将错误输出添加到原始问题)
    猜你喜欢
    • 1970-01-01
    • 2020-09-09
    • 1970-01-01
    • 2019-06-22
    • 1970-01-01
    • 1970-01-01
    • 2019-09-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多