安装Frappe v13出现pyparsing无downcaseTokens属性错误如何解决
问题根因
你遇到的报错完全由pyparsing版本不兼容导致:
- Frappe v13依赖的httplib2 0.20.1要求pyparsing版本范围为
>=2.4.2,<3,你环境中默认安装的3.0.0超出了该范围,因此执行bench init时会抛出依赖冲突警告
ERROR: httplib2 0.20.1 has requirement pyparsing<3,>=2.4.2, but you'll have pyparsing 3.0.0 which is incompatible.
- pyparsing 3.0+版本正式移除了2.x版本中标记为废弃的
downcaseTokens函数,因此新建站点时会抛出属性错误:
AttributeError: module 'pyparsing' has no attribute 'downcaseTokens'
强制安装符合版本要求的旧版pyparsing完全可以解决该问题,属于常规修复方案。
修复步骤
分两种场景操作即可:
场景1:尚未执行bench init
执行初始化命令前,先全局或当前用户环境预安装兼容版本的pyparsing:
pip install pyparsing==2.4.7
安装完成后再正常执行bench init命令即可避免报错。
场景2:已完成bench init,仅新建站点时报错
需要进入bench对应的Python虚拟环境修改依赖版本:
- 进入你创建的frappe-bench目录,激活虚拟环境:
cd /替换为你自己的bench目录路径/frappe-bench && source env/bin/activate - 卸载当前安装的高版本pyparsing:
pip uninstall pyparsing -y - 安装兼容版本:
pip install pyparsing==2.4.7 - 验证版本正确:
执行pip show pyparsing,确认返回的Version字段为2.4.7即可。 - 退出虚拟环境:
deactivate
操作完成后再执行新建站点的命令即可正常运行。
注意事项
- 不要手动升级Frappe v13对应虚拟环境内的pyparsing到3.x及以上版本,该版本分支没有适配高版本pyparsing的API改动,升级会重新触发报错。
- 如果后续执行
bench update后再次出现该报错,重复上述虚拟环境内重装指定版本pyparsing的操作即可。
内容的提问来源于stack exchange,提问作者Hari
相关产品推荐
相关产品推荐

