Python打包教程中setup.cfg的package_dir为何要分多行设置?
问题核心原因
package_dir本身要求接收字典类型的配置值,而非普通字符串,它的作用是定义「Python包名 → 本地存储目录」的映射规则:
- 字典的键是Python包的名称,空字符串键是约定的全局匹配规则,代表所有未单独声明的顶层包都遵循该映射
- 你示例中的
= src就是声明空键对应src目录,意思是所有顶层包都从项目根目录下的src文件夹中查找
多行写法的必要性
INI格式的setup.cfg中,字典类型的配置默认要求用多行缩进格式书写:第一行只写配置名+等号换行,后续每一个缩进行对应一条键 = 值的映射条目。
你遇到的特殊写法是因为当前键为空,所以才会出现= src的格式,这种写法的可读性更高,尤其是存在多个包映射规则时优势更明显,示例:
package_dir = = src custom_utils = third_party/utils business_pkg = src/business
单行报错的原因
你直接写package_dir = src时,传入的是单个字符串,不符合字典类型的参数要求,打包工具的解析器尝试把字符串转换为字典失败,就抛出了对应的DistutilsOptionError错误。
如果一定要用单行写法,需要符合字典的声明格式:
package_dir = {"": "src"}
内容的提问来源于stack exchange,提问作者Galen
相关产品推荐
相关产品推荐

