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

Python打包异常:egg-info/source.txt文件未出现在构建包中

解决Python打包时子目录未被包含的问题

针对你遇到的打包后alembic、backups目录及alembic.ini文件未被安装到目标环境的问题,可尝试以下几种解决办法:

1. 给子目录添加__init__.py文件

setuptools默认将包含__init__.py的目录识别为子包,在package_name/alembic/和package_name/backups/目录下各创建一个空的__init__.py文件,让setuptools将它们当作子包处理,从而自动包含进安装包。

2. 明确MANIFEST.in规则

虽然你已经添加了graft package_name,但可以更明确地指定子目录和文件,修改MANIFEST.in内容为:

graft package_name/alembic
graft package_name/backups
include package_name/alembic.ini

这样能确保这些目录和文件被包含到源码包中。

3. 在setup.py中显式配置package_data

如果上述方法无效,可直接在setup()函数中添加package_data参数,强制指定需要包含的文件:

setup(
    packages=["package_name"],
    package_dir={
        "package_name": "./package_name",
    },
    include_package_data=True,
    package_data={
        "package_name": [
            "alembic.ini",
            "alembic/**/*",
            "backups/**/*"
        ]
    }
)

其中**/*表示递归包含对应目录下的所有子目录和文件。

4. 检查pyproject.toml配置

确保你的pyproject.toml中build-system配置正确,指定setuptools作为构建后端:

[build-system]
requires = ["setuptools>=61.0", "wheel"]
build-backend = "setuptools.build_meta"

错误的构建后端配置可能导致文件未被正确打包。

5. 使用wheel重新构建测试

尝试用wheel格式构建包,避免sdist的潜在问题:

python -m build --wheel

构建完成后,先安装本地生成的.whl文件验证是否包含所需目录,确认无误后再上传到Nexus。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 10:35:41