如何使用setuptools实现期望的Python包分发结构?
问题原因与解决办法
你的package_dir和packages.find配置本身是正确的,能让setuptools定位到scripts/layers下的mypackage。但sdist默认会把项目根目录下的所有文件(包括pyproject.toml、setup.py、setup.cfg)以及整个scripts目录结构都打包进去,这才导致分发后的结构不符合预期。
要实现只将mypackage放在分发包根目录的目标,需要做以下调整:
创建
MANIFEST.in文件
在项目根目录新建MANIFEST.in,写入以下内容,明确指定只包含mypackage的所有文件,排除其他无关内容:recursive-include scripts/layers/mypackage *验证配置效果
运行sdist命令后,解压生成的tar包,就能看到mypackage直接位于根目录下,不再带有scripts/layers的层级结构,也不会包含项目根目录的配置文件。
补充说明:如果你的setup.py没有实际逻辑,可以直接删除,现在仅靠pyproject.toml和setup.cfg就能完成包的构建。
内容的提问来源于stack exchange,提问作者Davisson Paulino
相关产品推荐
相关产品推荐

