如何让python setup.py sdist不修改PKG-INFO中的包名py_lib
问题:如何让sdist生成的PKG_INFO中Name字段保持为py_lib?
我的setup.py代码如下:
from setuptools import setup setup( name='py_lib', version='0.0.0', packages=["py_lib"], url='', license='', author='', author_email='', description='' )
执行python setup.py sdist后,生成的py_lib.egg-info/PKG_INFO内容如下:
Metadata-Version: 2.1 Name: py-lib Version: 0.0.0 Home-page: Author: Author-email:
我希望该文件中的Name字段保持为py_lib,该如何操作?
解决方法
setuptools默认会将包名中的下划线自动替换为连字符(符合PEP 503包名规范),要让PKG_INFO中的Name字段保留py_lib,可以用以下两种方法:
方法1:改用distutils构建
修改setup.py,替换导入模块为distutils.core:
from distutils.core import setup setup( name='py_lib', version='0.0.0', packages=["py_lib"], url='', license='', author='', author_email='', description='' )
执行python setup.py sdist后,PKG_INFO中的Name字段会保持为py_lib。
方法2:用setup.cfg强制指定包名
在项目根目录创建setup.cfg文件,写入以下内容:
[metadata] name = py_lib
保持原setup.py不变,执行sdist命令后,生成的PKG_INFO会保留下划线形式的py_lib作为Name字段值。
内容的提问来源于stack exchange,提问作者chikadance
相关产品推荐
相关产品推荐

