如何在Python包打包时将py.typed空白文件纳入aga8目录?
解决py.typed无法被打包进Python包的问题
首先得确认你的aga8是合法的Python包(目录下有__init__.py,或是符合PEP 420的命名空间包),py.typed必须放在这个包的根目录下(也就是aga8/py.typed)。下面根据主流打包工具给出精准配置:
如果你用setuptools
- 先确保pyproject.toml里正确声明要打包的包:
[tool.setuptools.packages] find = {} # 或者明确指定:packages = ["aga8"]
- 添加
package_data配置,强制包含py.typed:
[tool.setuptools.package_data] aga8 = ["py.typed"]
- (可选)如果要确保源码包(sdist)也包含该文件,新建
MANIFEST.in文件并写入:
include aga8/py.typed
如果你用Poetry
在pyproject.toml的packages配置里,明确包含py.typed:
[tool.poetry] # 其他配置... packages = [ { path = "aga8", include = ["*", "py.typed"] } ]
或者单独配置包数据:
[tool.poetry.package.data] aga8 = ["py.typed"]
排查常见坑
- 检查
.gitignore里有没有排除py.typed,如果有要去掉这条规则,否则打包工具会忽略它。 - 用
python -m build重新构建包,解压生成的.whl文件,查看aga8目录下是否存在py.typed,验证配置是否生效。
内容的提问来源于stack exchange,提问作者joe
相关产品推荐
相关产品推荐

