如何通过编程预定义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
相关产品推荐
相关产品推荐

