AttributeError:模块“集合”没有属性“MutableMapping”

新手上路,请多包涵

我最近在我的 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 许可协议

阅读 1.6k
1 个回答

这个问题似乎已经有了解决方案,但为了更好地理解这个问题,在 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.MutableMappingcollections.abc.MutableMapping

一个例子 :

 import collections
if sys.version_info.major == 3 and sys.version_info.minor >= 10:

    from collections.abc import MutableMapping
else:
    from collections import MutableMapping

原文由 Just Khaithang 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题