【问题标题】:Getting AttributeError: module 'collections' has no attribute 'MutableMapping' while using any pip3 command on linux Python 3.10获取 AttributeError:在 linux Python 3.10 上使用任何 pip3 命令时,模块“collections”没有属性“MutableMapping”
【发布时间】:2021-11-29 09:43:55
【问题描述】:

嘿,我已经在我的 linux (Zorin os lite 15.3 X64) 机器上安装了最新的 python 3.10 和 pip3,但是每当我尝试使用任何 pip3 命令时,我都会收到以下错误 例如我使用命令:

pip3 冻结

我收到以下错误:

Traceback (most recent call last):
  File "/usr/bin/pip3", line 9, in <module>
    from pip 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'

这在 python 3.9 上运行良好,但是当我更新到 3.10 时,我开始收到此错误。我该如何解决这个问题?

【问题讨论】:

  • 您最终能自己解决这个问题吗?将 Python 更新到 3.10.1 并没有帮助。
  • 不,我切换回 3.9 版
  • 请参阅下面的更新 - 我认为我们有一个解决方案(或至少一个解决方法)。

标签: python python-3.x linux pip attributeerror


【解决方案1】:

问题是由旧版本的pyparsing 引起的,该版本已被出售到pkg_resources,现在是setuptools 的一部分。

我认为如果您安装更新的setuptools,事情会运行得更好:

python -m pip install -U setuptools

编辑 - 在 Ubuntu 18.04 上安装我自己的 3.10.1 版本后,我遇到了同样的问题。并且损坏的 pkg_resources 正在阻止进行任何更新,因此您的经典 Catch-22。为了开始寻找解决方案,我已经在 setuptools Github repo 上提交了一张票。

EDIT2 - 基于aid on the setuptools GitHub repo,我做了以下步骤:

# add deadsnake repo (default or nightly)
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt install python3.10
git clone https://github.com/pypa/setuptools.git && cd setuptools && sudo python3.10 setup.py install
sudo apt install python3.10-distutils
curl -sS https://bootstrap.pypa.io/get-pip.py | python3.10
sudo apt install python3.10-venv

此时,我可以在 Python3.10 中运行 pip,并使用 python3.10 -m venv virtualenv-dir 创建 venvs。

【讨论】:

  • 这对任何人有用吗?我正在使用通过 pyenv 安装的 python 3.10,它对我不起作用。如果这有所不同,我也在我的环境中使用 pipenv。
  • pkg_resources 进口包装,进口pyparsing。 pyparsing 3.0.5 版本包括破坏性 API 更改,这些更改在 pyparsing 3.0.6 中被重构。如果更新到 pyparsing 3.0.6 后仍然无法正常工作,请在 pyparsing 的 GitHub 上发布问题。
  • Packaging 21.3 刚刚推送到 pypi,兼容最新的 pyparsing,所以我认为如果升级到两个包中的最新版本,这些问题都应该得到解决。
  • @AugustineCalvino - 我现在在 Ubuntu 上看到这个问题,正在解决它。你能解决吗?
  • 不,我无法解决这个问题 - 由于这个和其他一些原因,我最终切换到 Poetry。
【解决方案2】:

更新 pip...collections.MutableMapping 已成为 collections.abc.MutableMapping。

【讨论】:

  • 其实你想更新python轮子。如果您遇到任何其他问题,首先要做的是从 pypi 更新到最新的软件包版本。
  • 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center
猜你喜欢
  • 2022-06-14
  • 1970-01-01
  • 2016-03-20
  • 2022-06-26
  • 2022-10-26
  • 1970-01-01
  • 2021-12-04
  • 2022-12-15
相关资源
最近更新 更多