如何通过pyproject.toml配置setuptools实现自定义PyPI包目录结构
解决方案
要在不修改现有目录结构的前提下,把Dataset和Model作为my_ai_package的子包打包,需要修改pyproject.toml中的setuptools配置,具体如下:
替换原有配置
删除原来的[tools.setuptools.packages.find]块,改用以下配置:
[project] name = "my_ai_package" # 保留你原本的版本、作者等其他项目配置 [tool.setuptools] package_dir = { "my_ai_package" = "." } # 将my_ai_package映射到当前项目根目录 packages = [ "my_ai_package", "my_ai_package.Dataset", "my_ai_package.Model", "my_ai_package.Model.utils", "my_ai_package.Model.some_model", "my_ai_package.Model.trained_models", ] # 如需打包data、trained_models中的非Python文件,添加以下配置 [tool.setuptools.package-data] my_ai_package.Dataset = ["data/*.csv"] my_ai_package.Model.trained_models = ["*.pkl"]
配置说明
package_dir:指定my_ai_package主包的根目录对应到项目根目录,让setuptools将根目录下的Dataset和Model识别为它的子包。packages:手动列出所有需要打包的包,包括主包和所有嵌套子包,确保所有模块都被纳入安装包。package-data:用于打包csv、pkl这类非代码资源,确保它们能被正确安装到site-packages目录中。
正确导入方式
配置完成后,可使用以下格式导入模块:
from my_ai_package.Dataset import some_ds1_script from my_ai_package.Model.utils import some_utils1_script from my_ai_package.Model.some_model import some_model_script
内容的提问来源于stack exchange,提问作者ImSo3K
相关产品推荐
相关产品推荐

