如何修复 python3 上的 pip 错误升级

How to fix a bad upgrade of pip on python3

在有人拍我的手之前,我已经安装了 venv/virtualenv 来设置虚拟环境,但我遇到了其他问题,所以有人建议我将我的 pip3 版本升级到当前版本(现在是 22.0.4)

我不知何故搞砸了 pip 和 pip3 所以希望有人能帮助我。

我试图通过 运行ning

在我的 Ubuntu 16.04 盒子上升级我的 pip 版本
pip3 install --upgrade pip

我也试过运行宁

pip3 install --upgrade pip3

升级后,我在尝试 运行 pip3 时一直出错,所以我删除了它,打算用 get-pip.py 脚本安装。

但是,现在当我尝试使用

安装 pip3 时
sudo python3 /tmp/get-pip.py

我不断收到 AttributeError:

$ sudo python3 /tmp/get-pip.py 
Traceback (most recent call last):
  File "/tmp/get-pip.py", line 27077, in <module>
    main()
  File "/tmp/get-pip.py", line 135, in main
    bootstrap(tmpdir=tmpdir)
  File "/tmp/get-pip.py", line 111, in bootstrap
    monkeypatch_for_cert(tmpdir)
  File "/tmp/get-pip.py", line 92, in monkeypatch_for_cert
    from pip._internal.commands.install import InstallCommand
  File "<frozen importlib._bootstrap>", line 971, in _find_and_load
  File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 656, in _load_unlocked
  File "<frozen importlib._bootstrap>", line 626, in _load_backward_compatible
  File "/tmp/tmpu1lmh2fr/pip.zip/pip/_internal/commands/__init__.py", line 9, in <module>
...
...
  File "<frozen importlib._bootstrap>", line 971, in _find_and_load
  File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 656, in _load_unlocked
  File "<frozen importlib._bootstrap>", line 626, in _load_backward_compatible
  File "/tmp/tmpu1lmh2fr/pip.zip/pip/_vendor/pyparsing.py", line 5677, in <module>
  File "/tmp/tmpu1lmh2fr/pip.zip/pip/_vendor/pyparsing.py", line 1488, in setResultsName
  File "/tmp/tmpu1lmh2fr/pip.zip/pip/_vendor/pyparsing.py", line 1491, in _setResultsName
  File "/tmp/tmpu1lmh2fr/pip.zip/pip/_vendor/pyparsing.py", line 1445, in copy
AttributeError: module 'copy' has no attribute 'copy'

有人可以指点我有关如何重新安装 pip/pip3 或如何解决此 AttributeError 的说明吗?希望该解决方案也能保留我之前下载的旧模块。谢谢

检查是否有文件/tmp/copy.py或目录+文件/tmp/copy/__init__.py。试试这些命令:sudo python3 -c "import copy; print(copy.copy)"sudo python3 -c "import copy; print(copy.__file__)"

如果其中任何一个存在,它将被导入而不是 standard module copy 因为 Python 预先设置了脚本的目录(脚本是 /tmp/get-pip.py,目录 /tmp/ ) 在 sys.path 的开头,所以它是 Python 开始查找 modules/packages.

的地方