使用Pipenv构建Python模块Wheel时遭遇toml模块缺失错误
解决Pipenv构建Wheel时
ModuleNotFoundError: No module named 'toml'的问题 问题原因
python -m build命令会创建完全隔离的临时构建环境,这个环境不会自动继承你Pipfile中声明的依赖。你的setup.py执行时需要导入toml模块,但该隔离环境默认只安装了setuptools和wheel,未包含toml,因此触发模块找不到的错误。
解决方案
你需要在项目的pyproject.toml文件中声明构建阶段依赖,让build工具在隔离环境中自动安装toml。如果项目还没有pyproject.toml,直接创建一个;如果已有,修改对应部分:
[build-system] requires = ["setuptools >= 40.8.0", "wheel", "toml >= 0.10.0"] build-backend = "setuptools.build_meta"
验证步骤
- 保存
pyproject.toml后,重新执行构建命令:
pipenv run python -m build --wheel
- 此时
build工具会在隔离环境中自动安装toml,setup.py即可正常导入并执行。
补充说明
Pipfile仅管理项目运行和开发阶段的依赖,而构建阶段的依赖需通过pyproject.toml的build-system.requires声明,这是PEP 517/518规定的现代Python打包标准流程。
内容的提问来源于stack exchange,提问作者Akshay
相关产品推荐
相关产品推荐

