You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过pyproject.toml将多级目录完整打包进Python项目myproj

解决方案

要将algorithms和configs目录完整打包进myproj包中,有两种可行方案,推荐优先使用符合Python打包规范的目录调整方案:

方案一:调整目录结构(推荐)

这是最符合Python打包规范的做法,将数据目录纳入包源码结构内:

  1. 调整目录位置
    将根目录下的algorithms和configs文件夹移动到src/myproj目录下,调整后的项目结构如下:
myproj/
    src/
        myproj/
            dosomething.py
            algorithms/
                Type1/
                    algorithm1/
                        eval.py
                        hyperparameters.yml
                        ...
                    algorithm2/
                        ...
                Type2/
                    ...
            configs/
                type1.yml
                type2.yml
    tests/
        test_do_something.py
    pyproject.toml
    mypy.ini
    tox.ini
    run-mypy
  1. 修改pyproject.toml
    添加[tool.setuptools]配置段,开启自动包含包内数据文件:
[build-system]
requires = ["setuptools >= 61.0", "wheel"]
build-backend = "setuptools.build_meta"

[project]
name = "myproj"
version = "0.0.1"
readme = "README.md"
dependencies = [
    "numpy >= 1.26.4",
]

[project.urls]
repository = "https://gitlab.com/somerepo"  # 补全闭合引号

[project.optional-dependencies]
dev = [
    "tox",
    "pytest",
    "pytest-sugar",
    "pytest-cov",
    "black",
    "flake8",
    "flake8-docstrings",
    "mypy",
    "pre-commit",
    "sphinx",
    "sphinx-rtd-theme"
]

[tool.setuptools]
include-package-data = true

方案二:不调整目录,通过配置映射

如果不想改动现有目录结构,可通过setuptools的配置将外部目录映射到包内:

  1. 创建MANIFEST.in文件
    在项目根目录新建MANIFEST.in,内容如下:
recursive-include algorithms *
recursive-include configs *
  1. 修改pyproject.toml
    添加[tool.setuptools]配置段,指定包数据映射规则:
[build-system]
requires = ["setuptools >= 61.0", "wheel"]
build-backend = "setuptools.build_meta"

[project]
name = "myproj"
version = "0.0.1"
readme = "README.md"
dependencies = [
    "numpy >= 1.26.4",
]

[project.urls]
repository = "https://gitlab.com/somerepo"  # 补全闭合引号

[project.optional-dependencies]
dev = [
    "tox",
    "pytest",
    "pytest-sugar",
    "pytest-cov",
    "black",
    "flake8",
    "flake8-docstrings",
    "mypy",
    "pre-commit",
    "sphinx",
    "sphinx-rtd-theme"
]

[tool.setuptools]
package-dir = { "myproj" = "src/myproj" }
packages = ["myproj"]
package-data = {
    "myproj": [
        "../../algorithms/**/*",
        "../../configs/**/*"
    ]
}
include-package-data = true

验证安装

在测试conda环境中执行:

pip install .

安装完成后检查env/test_env/lib/python3.9/site-packages/myproj目录,即可看到algorithms、configs和dosomething.py共存的结构。

内容的提问来源于stack exchange,提问作者lr100

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 01:19:53