我最近在我的 ubuntu 系统上安装了 python3.10,我相信我建立了一个从 /usr/bin/python3
到 /usr/bin/python3.10
的链接
如果我运行 python --version
python3 --version
得到 Python 2.7.17
Python 3.10.2
我相信我所做的事情破坏了我的全局 python/pip 中的某些东西。
每当我尝试在全球范围内使用 pip 时,我都会收到此错误:
Traceback (most recent call last):
File "/usr/local/bin/pip", line 7, in <module>
from pip._internal.cli.main import main
File "/usr/lib/python3/dist-packages/pip/__init__.py", line 22, in <module>
from pip._vendor.requests.packages.urllib3.exceptions import DependencyWarning
File "/usr/lib/python3/dist-packages/pip/_vendor/__init__.py", line 73, in <module>
vendored("pkg_resources")
File "/usr/lib/python3/dist-packages/pip/_vendor/__init__.py", line 33, in vendored
__import__(modulename, globals(), locals(), level=0)
File "/usr/share/python-wheels/pkg_resources-0.0.0-py2.py3-none-any.whl/pkg_resources/__init__.py", line 77, in <module>
File "/usr/share/python-wheels/pkg_resources-0.0.0-py2.py3-none-any.whl/pkg_resources/_vendor/packaging/requirements.py", line 9, in <module>
File "<frozen importlib._bootstrap>", line 1027, in _find_and_load
File "<frozen importlib._bootstrap>", line 1006, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 672, in _load_unlocked
File "<frozen importlib._bootstrap>", line 632, in _load_backward_compatible
File "/usr/share/python-wheels/pkg_resources-0.0.0-py2.py3-none-any.whl/pkg_resources/extern/__init__.py", line 43, in load_module
File "/usr/share/python-wheels/pkg_resources-0.0.0-py2.py3-none-any.whl/pkg_resources/_vendor/pyparsing.py", line 943, in <module>
AttributeError: module 'collections' has no attribute 'MutableMapping'
谷歌搜索后,我认为问题是我的 pip 是使用旧版本的 python 制作的,所以我尝试运行:
sudo apt remove python-pip python3-pip
sudo apt install python-pip python3-pip
但即使在这之后我仍然会遇到与 pip 相同的错误。
我确实有一个与 django 项目(使用 python 3.10)一起使用的 virtualenv,如果我从中获取源代码,我可以在那里使用 pip,但我认为这只是表明 venv 中的 pip 已正确配置
运行结果 ls -la /usr/bin/ | grep -i
:
brick@nextgearserver:/etc/apache2$ ls -la /usr/bin/ | grep -i "pip\|python"
lrwxrwxrwx 1 root root 26 Mar 26 2018 dh_pypy -> ../share/dh-python/dh_pypy
-rwxr-xr-x 1 root root 1056 Apr 16 2018 dh_python2
lrwxrwxrwx 1 root root 29 Mar 26 2018 dh_python3 -> ../share/dh-python/dh_python3
lrwxrwxrwx 1 root root 13 Dec 7 2018 lesspipe -> /bin/lesspipe
lrwxrwxrwx 1 root root 23 Feb 27 2021 pdb2.7 -> ../lib/python2.7/pdb.py
lrwxrwxrwx 1 root root 24 Jan 15 13:03 pdb3.10 -> ../lib/python3.10/pdb.py
lrwxrwxrwx 1 root root 23 Dec 8 16:08 pdb3.6 -> ../lib/python3.6/pdb.py
-rwxr-xr-x 1 root root 292 Apr 30 2021 pip
-rwxr-xr-x 1 root root 292 Apr 30 2021 pip2
-rwxr-xr-x 1 root root 293 Apr 30 2021 pip3
lrwxrwxrwx 1 root root 31 Oct 25 2018 py3versions -> ../share/python3/py3versions.py
lrwxrwxrwx 1 root root 26 Mar 26 2018 pybuild -> ../share/dh-python/pybuild
lrwxrwxrwx 1 root root 9 Apr 16 2018 python -> python2.7
lrwxrwxrwx 1 root root 9 Apr 16 2018 python2 -> python2.7
-rwxr-xr-x 1 root root 3633000 Feb 27 2021 python2.7
lrwxrwxrwx 1 root root 33 Feb 27 2021 python2.7-config -> x86_64-linux-gnu-python2.7-config
lrwxrwxrwx 1 root root 16 Apr 16 2018 python2-config -> python2.7-config
lrwxrwxrwx 1 root root 19 Jan 30 15:07 python3 -> /usr/bin/python3.10
-rwxr-xr-x 1 root root 5515256 Jan 15 13:03 python3.10
-rwxr-xr-x 2 root root 4526456 Dec 8 16:08 python3.6
lrwxrwxrwx 1 root root 33 Dec 8 16:08 python3.6-config -> x86_64-linux-gnu-python3.6-config
-rwxr-xr-x 2 root root 4526456 Dec 8 16:08 python3.6m
lrwxrwxrwx 1 root root 34 Dec 8 16:08 python3.6m-config -> x86_64-linux-gnu-python3.6m-config
lrwxrwxrwx 1 root root 16 Oct 25 2018 python3-config -> python3.6-config
-rwxr-xr-x 1 root root 384 Feb 5 2018 python3-futurize
lrwxrwxrwx 1 root root 10 Oct 25 2018 python3m -> python3.6m
lrwxrwxrwx 1 root root 17 Oct 25 2018 python3m-config -> python3.6m-config
-rwxr-xr-x 1 root root 388 Feb 5 2018 python3-pasteurize
-rwxr-xr-x 1 root root 152 Nov 11 2017 python3-pbr
lrwxrwxrwx 1 root root 16 Apr 16 2018 python-config -> python2.7-config
lrwxrwxrwx 1 root root 29 Apr 16 2018 pyversions -> ../share/python/pyversions.py
-rwxr-xr-x 1 root root 2971 Feb 27 2021 x86_64-linux-gnu-python2.7-config
-rwxr-xr-x 1 root root 3246 Jan 15 13:03 x86_64-linux-gnu-python3.10-config
lrwxrwxrwx 1 root root 34 Dec 8 16:08 x86_64-linux-gnu-python3.6-config -> x86_64-linux-gnu-python3.6m-config
-rwxr-xr-x 1 root root 3283 Dec 8 16:08 x86_64-linux-gnu-python3.6m-config
lrwxrwxrwx 1 root root 33 Oct 25 2018 x86_64-linux-gnu-python3-config -> x86_64-linux-gnu-python3.6-config
lrwxrwxrwx 1 root root 34 Oct 25 2018 x86_64-linux-gnu-python3m-config -> x86_64-linux-gnu-python3.6m-config
lrwxrwxrwx 1 root root 33 Apr 16 2018 x86_64-linux-gnu-python-config -> x86_64-linux-gnu
python2.7-config
原文由 BRICK MANE 发布,翻译遵循 CC BY-SA 4.0 许可协议
这个问题似乎已经有了解决方案,但为了更好地理解这个问题,在 python 3.10 中,属性
MutableMapping
来自模块collections
已被删除。在您的情况下,/usr/share/python-wheels/pkg_resources-0.0.0-py2.py3-none-any.whl/pkg_resources/_vendor/pyparsing.py
使用集合的 MutableMapping 属性。作为向后兼容性,该属性已移至
collections.abc
。所以一个肮脏的黑客将是(如果你不想升级)替换所有collections.MutableMapping
到collections.abc.MutableMapping
一个例子 :