Python3.10创建pipenv环境报collections无MutableMapping错误
报错原因
Python 3.10 版本正式移除了 collections 模块顶层的抽象基类别名(包括MutableMapping),这类类从Python 3.3开始就已经迁移到collections.abc子模块下,仅在顶层保留兼容别名到3.9版本。
本地安装的pipenv版本过旧,其内置打包的requests第三方库还在使用旧的collections.MutableMapping导入路径,运行到对应代码时就会抛出属性错误。
从运行日志可以看到,虚拟环境本身已经创建完成,报错发生在后续生成Pipfile.lock的依赖锁定阶段:pipenv需要调用内置requests拉取PyPI的依赖元数据,导入失败直接导致锁流程崩溃,最终中断整个安装命令。
解决方案
- 优先方案:升级pipenv到最新版本,从根源解决兼容问题
如果你是通过apt等系统包管理器安装的旧版pipenv,先执行卸载:
再通过pip安装最新版pipenv:sudo apt remove -y pipenv
安装完成后重新执行原创建命令即可正常运行。pip install --user --upgrade pipenv - 临时补丁方案:如果暂时无法升级pipenv,可手动修改报错文件做兼容
打开日志中报错的文件路径/usr/lib/python3/dist-packages/pipenv/vendor/requests/cookies.py,在文件头部导入区域添加如下代码:
保存修改后重新运行pipenv命令即可,该补丁会在后续pipenv升级时被覆盖,仅作临时使用。import collections.abc collections.MutableMapping = collections.abc.MutableMapping - 临时规避方案:使用Python 3.9及以下版本创建虚拟环境
Python 3.9及更早版本仍保留collections模块顶层的抽象基类兼容别名,不会触发该导入错误,适合不需要强制使用Python 3.10的临时场景。
内容的提问来源于stack exchange,提问作者spenpal
相关产品推荐
相关产品推荐

