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

在setuptools的pyproject.toml中,py_modules参数应放置在何处?

pyproject.toml中py_modules的正确配置位置

核心结论

py_modules是setuptools专属配置项,必须放在[tool.setuptools]区块下。你之前遇到的报错,要么是放错了区块(比如[project]),要么是setuptools版本不兼容导致的。

针对你的项目的解决方案

你的项目根目录存在独立的__init__.py,同时有baseclasses和elements两个子包,以下是两种可行的配置方式:

方式1:直接配置py_modules(需升级setuptools)

修改pyproject.toml的[tool.setuptools]区块,同时升级setuptools版本以支持该配置:

[tool.setuptools]
packages = ["baseclasses", "elements"]
py_modules = ["__init__"]

[build-system]
requires = ["setuptools>=61.0.0", "wheel"]  # 升级到支持pyproject.toml配置的版本
build-backend = "setuptools.build_meta"

旧版本的setuptools(比如你当前指定的>=43.0.0)还未完全支持在pyproject.toml中配置py_modules,升级到61.0.0及以上版本即可解决报错。

方式2:调整项目结构(更规范的包管理方式)

如果根目录的__init__.py是项目主模块,建议将其整合到与项目同名的elements包中,调整后的项目结构如下:

.
├── .gitignore
├── LICENSE
├── README.md
├── elements
│   ├── __init__.py  # 迁移原根目录__init__.py的内容到这里
│   ├── baseclasses
│   │   ├── __init__.py
│   │   ├── bunch_of_py_files.py
│   ├── bunch_of_py_files.py
├── pyproject.toml

然后修改pyproject.toml的包配置,使用自动发现更便捷:

[tool.setuptools]
packages = {find = {}}

报错原因说明

  • 放在[project]区块报错:py_modules不属于PEP 621定义的标准项目配置属性,该区块仅接受PEP规范明确列出的字段。
  • 放在[tool.setuptools]区块报错:旧版本setuptools未支持在pyproject.toml中配置py_modules,升级版本即可解决。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 07:27:28