Python项目src布局规范:除项目模块外还可存放什么?
Python src布局相关问题解答
1. src目录除项目模块外是否允许存放其他内容?
允许,但需遵循打包工具的规则:
- src目录的核心作用是隔离项目代码与根目录的配置、测试等文件,并非严格限制只能放项目模块
- 可存放辅助模块、数据文件、子项目包等,但需要被打包配置文件(如
pyproject.toml、setup.py)明确声明,否则不会被包含在发布到PyPI的包中 - 临时脚本、未配置的非必要文件可以放在src下,但不会被pip安装到用户环境
2. src下添加mypkg2并发布后,用户能否import mypkg和mypkg2?
这个理解是正确的:
- 只要在打包配置中正确识别这两个包(比如在
pyproject.toml的packages字段使用find: {where = ["src"]},或者显式列出["mypkg", "mypkg2"]}),发布到PyPI后,用户执行pip install时,两个包都会被安装到Python的site-packages目录 - 安装完成后,用户可以直接通过
import mypkg和import mypkg2导入这两个包
官方规范依据
根据PEP 621(标准项目元数据)及setuptools官方文档,src布局下的顶级Python包(含
__init__.py的常规包,或Python 3.3+的命名空间包),只要被打包配置正确纳入,就会被包含在发布包中并可被用户导入。
内容的提问来源于stack exchange,提问作者lofidevops
相关产品推荐
相关产品推荐

