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

使用Python3.9.13与pip22.2.1安装依赖时子进程报错,如何解决?

解决Python3.9安装依赖时的AttributeError: 'HTMLParser'对象没有'unescape'属性错误

问题原因

这个错误是由于系统自带的setuptools版本过旧,不兼容Python3.9导致的。报错信息显示,在执行heroku3包的setup.py egg_info时,旧版setuptools的py33compat.py文件尝试调用HTMLParser().unescape,但Python3.9中HTMLParser已移除该方法,转而使用html.unescape,旧版setuptools未适配此变更。

解决方案

1. 升级系统级setuptools和pip

执行以下命令升级系统中的setuptools和pip到兼容Python3.9的版本:

sudo pip install --upgrade setuptools pip

升级完成后,重新运行依赖安装命令即可。

2. 使用虚拟环境隔离系统依赖

如果系统级升级受限,建议创建Python3.9专属的虚拟环境,避免与旧版系统依赖冲突:

  • 创建虚拟环境:
    python3.9 -m venv my_project_env
    
  • 激活虚拟环境(Linux/macOS):
    source my_project_env/bin/activate
    
    (Windows系统执行:my_project_env\Scripts\activate)
  • 激活后重新安装项目依赖:
    pip install -r requirements.txt
    

3. 直接安装heroku3的兼容版本

如果上述方法仍无法解决,可尝试安装heroku3的最新源码版本,该版本已修复setuptools兼容问题:

pip install git+https://github.com/martyzz1/heroku3.py.git

报错信息参考

正在收集aiofiles
使用缓存的aiofiles-0.8.0-py3-none-any.whl (13 kB)
正在收集aiohttp
使用缓存的aiohttp-3.8.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl (1.2 MB)
正在收集asyncio
使用缓存的asyncio-3.4.3-py3-none-any.whl (101 kB)
正在收集dnspython
使用缓存的dnspython-2.2.1-py3-none-any.whl (269 kB)
正在收集ffmpeg-python
使用缓存的ffmpeg_python-0.2.0-py3-none-any.whl (25 kB)
正在收集gitpython
使用缓存的GitPython-3.1.27-py3-none-any.whl (181 kB)
正在收集hachoir
使用缓存的hachoir-3.1.3-py3-none-any.whl (647 kB)
正在收集heroku3
使用缓存的heroku3-5.1.4.tar.gz (160 kB)
准备元数据(setup.py)... 错误
错误:subprocess-exited-with-error

× python setup.py egg_info 运行失败。
│ 退出代码:1
╰─> [12行输出]
回溯(最近的调用最后):
文件 "",第2行,在
文件 "",第14行,在
文件 "/usr/lib/python3/dist-packages/setuptools/init.py",第14行,在
from setuptools.dist import Distribution, Feature
文件 "/usr/lib/python3/dist-packages/setuptools/dist.py",第24行,在
from setuptools.depends import Require
文件 "/usr/lib/python3/dist-packages/setuptools/depends.py",第7行,在
from .py33compat import Bytecode
文件 "/usr/lib/python3/dist-packages/setuptools/py33compat.py",第54行,在
unescape = getattr(html, 'unescape', html_parser.HTMLParser().unescape)
AttributeError: 'HTMLParser' 对象没有属性 'unescape'
[输出结束]

注意:此错误源自子进程,大概率与pip无关。
错误:metadata-generation-failed

× 生成包元数据时遇到错误。
╰─> 详见上述输出。

注意:这是上述提及包的问题,与pip无关。
提示:详见上述详情。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 15:27:48