You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python3.7虚拟环境pip安装aiohttp触发AttributeError:_dep_map错误

问题描述

我正尝试在Python 3.7虚拟环境中安装aiohttp,但在安装yarl依赖时触发了AttributeError: _dep_map异常。执行pip install aiohttp后,安装流程在处理yarl-1.3.0.tar.gz时失败,报错信息为AttributeError: _dep_map。我已查询aiohttp和yarl的GitHub相关问题但无收获,也尝试安装yarl的1.0、1.1、1.2旧版本,均未解决问题。请问该错误的成因可能是什么?

相关命令输出如下:

$ pip install aiohttp
Collecting aiohttp
Using cached https://files.pythonhosted.org/packages/33/60/c21acb7002110699761d3dec36fad3f5087c2752a4eb495444f877db6553/aiohttp-3.5.4-cp37-cp37m-manylinux1_x86_64.whl
Collecting multidict<5.0,>=4.0 (from aiohttp)
Downloading https://files.pythonhosted.org/packages/88/f0/4d4cbd1a3744e3985efa49682352d0703df653ffa76b81f10fed86599a50/multidict-4.5.2-cp37-cp37m-manylinux1_x86_64.whl (309kB)
100% |████████████████████████████████| 317kB 65.0MB/s
Collecting attrs>=17.3.0 (from aiohttp)
Using cached https://files.pythonhosted.org/packages/3a/e1/5f9023cc983f1a628a8c2fd051ad19e76ff7b142a0faf329336f9a62a514/attrs-18.2.0-py2.py3-none-any.whl
Requirement already satisfied: async-timeout<4.0,>=3.0 in /fast/src/mobitroll/merlin/tools/ws/.py37/lib/python3.7/site-packages (from aiohttp) (3.0.1)
Requirement already satisfied: chardet<4.0,>=2.0 in /fast/src/mobitroll/merlin/tools/ws/.py37/lib/python3.7/site-packages (from aiohttp) (3.0.4)
Collecting yarl<2.0,>=1.0 (from aiohttp)
Downloading https://files.pythonhosted.org/packages/fb/84/6d82f6be218c50b547aa29d0315e430cf8a23c52064c92d0a8377d7b7357/yarl-1.3.0.tar.gz (159kB)
100% |████████████████████████████████| 163kB 87.1MB/s
Complete output from command python setup.py egg_info:
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/tmp/pip-install-od3qiiy3/yarl/setup.py", line 102, in <module>
setup(**args)
File "/fast/src/mobitroll/merlin/tools/ws/.py37/lib/python3.7/site-packages/setuptools/__init__.py", line 142, in setup
_install_setup_requires(attrs)
File "/fast/src/mobitroll/merlin/tools/ws/.py37/lib/python3.7/site-packages/setuptools/__init__.py", line 131, in _install_setup_requires
(k, v) for k, v in attrs.items()
File "/fast/src/mobitroll/merlin/tools/ws/.py37/lib/python3.7/site-packages/setuptools/dist.py", line 442, in __init__
k: v for k, v in attrs.items()
File "/usr/lib/python3.7/distutils/dist.py", line 292, in __init__
self.finalize_options()
File "/fast/src/mobitroll/merlin/tools/ws/.py37/lib/python3.7/site-packages/setuptools/dist.py", line 600, in finalize_options
ep.require(installer=self.fetch_build_egg)
File "/fast/src/mobitroll/merlin/tools/ws/.py37/lib/python3.7/site-packages/pkg_resources/__init__.py", line 2367, in require
reqs = self.dist.requires(self.extras)
File "/fast/src/mobitroll/merlin/tools/ws/.py37/lib/python3.7/site-packages/pkg_resources/__init__.py", line 2635, in requires
dm = self._dep_map
File "/fast/src/mobitroll/merlin/tools/ws/.py37/lib/python3.7/site-packages/pkg_resources/__init__.py", line 2691, in __getattr__
raise AttributeError(attr)
AttributeError: _dep_map
----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-install-od3qiiy3/yarl/
可能的成因与解决建议

碰到这个AttributeError: _dep_map的报错,大概率是你的依赖管理工具(setuptools/pkg_resources)或者虚拟环境本身出了问题,结合你提供的报错栈信息,我整理了几个方向供你排查:

  • setuptools或pkg_resources版本不兼容/损坏
    从报错轨迹能看到,错误发生在pkg_resources内部的依赖映射调用上,这通常是因为setuptools版本太旧,或者组件文件损坏导致的。你可以先尝试升级pip和setuptools到最新兼容版本:

    pip install --upgrade pip setuptools
    

    如果升级后问题依旧,不妨卸载重装setuptools试试:

    pip uninstall -y setuptools
    pip install setuptools
    
  • 虚拟环境本身损坏
    虚拟环境的文件可能因为某些原因(比如磁盘空间不足、意外中断安装)出现缺失或损坏,导致依赖管理组件无法正常工作。这种情况下,最简单的办法是创建一个全新的Python3.7虚拟环境,再尝试安装:

    # 用venv创建新环境
    python3.7 -m venv fresh_py37_env
    source fresh_py37_env/bin/activate
    pip install aiohttp
    
  • 系统Python与虚拟环境的隔离性问题
    有时候系统级的Python组件会“渗透”到虚拟环境中,导致版本冲突。如果用的是virtualenv工具,可以创建完全隔离的环境:

    virtualenv --no-site-packages -p python3.7 isolated_env
    source isolated_env/bin/activate
    pip install aiohttp
    
  • 尝试安装预编译的yarl wheel包
    你之前尝试了yarl的旧版本,但都是源码包安装(从tar.gz可以看出来),或许直接安装预编译的wheel包能绕过egg_info阶段的问题。试试强制安装wheel版本:

    pip install yarl==1.3.0 --only-binary :all:
    

    如果这个命令成功,再安装aiohttp应该就没问题了。


内容的提问来源于stack exchange,提问作者Cosimo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 04:00:17