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

如何从Python bdist_egg/bdist_wheel包中排除单个源文件?

当然可以!你完全可以精准地把那个包含敏感信息的file_to_exclude.py单独从Python egg或wheel包中移除,不用一刀切地排除所有源文件。下面是几种适配你项目结构的可行方案:

方案1:在setup.py中配置精准排除规则

这是最直接的方式,通过exclude_package_data参数指定要排除的单个文件,同时保留其他源文件的控制权限。修改你的setup.py如下:

from setuptools import setup, find_packages

setup(
    name="your-package-name",  # 替换成你的实际包名
    packages=find_packages("src"),
    package_dir={"": "src"},  # 指定源码根目录为src
    # 可选:如果需要包含其他特定文件,可在这里配置
    package_data={
        "your_package": ["*.py"],  # your_package对应src目录下的包名
    },
    # 核心:精准排除目标文件
    exclude_package_data={
        "your_package": ["file_to_exclude.py"],
    },
)

配置完成后,不管你执行egg还是wheel的构建命令,这个文件都会被自动排除:

# 构建egg包
python setup.py bdist_egg --exclude-source-files
# 构建wheel包
python setup.py bdist_wheel --exclude-source-files

方案2:使用MANIFEST.in实现通用排除

如果你需要同时控制源码包和二进制包的文件排除,可以在项目根目录创建MANIFEST.in文件,写入以下内容:

exclude src/file_to_exclude.py

这个文件会被setuptools自动识别,在构建任何类型的包时都会遵循这个排除规则,无需额外命令参数(当然配合--exclude-source-files使用效果更好)。

方案3:使用现代build工具简化流程

如果你已经在使用更现代的Python构建工具,可以用build包来完成,同样会遵循setup.py里的排除规则:

# 先安装build工具
pip install build
# 构建wheel包(自动遵循exclude配置)
python -m build --wheel --no-isolation

重要验证步骤

构建完成后,记得解压生成的egg或wheel包(两者本质都是压缩文件),确认file_to_exclude.py以及对应的编译文件(如.pyc)都不在包内,确保敏感信息没有泄露。

另外额外提醒:尽量避免在代码中硬编码密钥这类敏感信息,即使排除了文件,开发环境中的源码也要妥善保管,建议使用环境变量或专业的密钥管理服务来处理敏感数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 10:03:31