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

如何通过编程预定义Python Egg包名称,生成py3格式包名?

解决setuptools生成Egg包名仅保留py3后缀的问题

方法一:通过setup参数声明兼容范围

在setup的配置参数里添加两个关键项,明确包的Python版本兼容范围和平台兼容性:

from setuptools import setup, Extension
kwargs = {
    "name": "foo",
    "author": "",
    "version": "1.0",
    "ext_modules": Extension(name='util/helper/foo', sources=[]),
    "python_requires": ">=3.0",  # 声明仅支持Python3系列
    "platforms": ["any"]  # 声明兼容所有平台
}

setup(**kwargs)

方法二:自定义egg信息生成逻辑

如果上述参数不生效,可以通过重写egg_info命令的方式,直接修改生成的文件名:

from setuptools import setup, Extension
from setuptools.command.egg_info import egg_info

class CustomEggInfo(egg_info):
    def write(self, basename, filename):
        # 替换自动生成的后缀,只保留py3标记
        if filename.endswith('.egg-info'):
            base_name = f"{self.distribution.get_name()}-{self.distribution.get_version()}"
            filename = f"{base_name}-py3.egg-info"
        super().write(basename, filename)

kwargs = {
    "name": "foo",
    "author": "",
    "version": "1.0",
    "ext_modules": Extension(name='util/helper/foo', sources=[]),
    "cmdclass": {"egg_info": CustomEggInfo}
}

setup(**kwargs)

方法三:命令行参数直接指定

无需修改代码,打包时通过bdist_egg的命令行参数强制指定标签:

python setup.py bdist_egg --plat-name any --python-tag py3

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 07:05:03