Python 3.12中setup.py替代distutils的可行方案咨询
distutils弃用后的替代方案与setuptools.dist的使用
官方替代方案
- setuptools 是distutils的官方继任者,完全兼容distutils的所有功能,还新增了大量现代Python包管理特性——比如更灵活的依赖管理、轮子(wheel)构建支持、entry points定义等。目前Python官方明确推荐用setuptools来编写
setup.py,更推荐的是遵循PEP 621标准,用pyproject.toml配合setuptools完成项目配置。 - 如果你习惯
setup.py的写法,只需要把原来导入distutils的代码替换成setuptools即可:比如将from distutils.core import setup改成from setuptools import setup,原有配置逻辑基本不需要改动。
关于setuptools.dist的使用
当然可以用setuptools.dist,它是setuptools对distutils.dist模块的扩展增强版,提供了更强大的分发配置能力。你可以通过它自定义分发流程、添加额外构建步骤等,示例代码如下:
from setuptools import setup from setuptools.dist import Distribution class CustomDistribution(Distribution): def __init__(self, attrs=None): super().__init__(attrs) # 在这里添加你的自定义分发逻辑 setup( distclass=CustomDistribution, name="your-package", version="0.1.0", # 其他项目配置项 )
额外建议
- 优先尝试用
pyproject.toml声明项目元数据和构建依赖,这是当前Python包管理的标准方式,比传统setup.py更简洁易维护。比如在pyproject.toml中指定setuptools作为构建后端:
[build-system] requires = ["setuptools>=61.0"] build-backend = "setuptools.build_meta" [project] name = "your-package" version = "0.1.0" authors = [ { name="Your Name", email="your.email@example.com" } ] description = "你的包的简短描述" requires-python = ">=3.8"
内容的提问来源于stack exchange,提问作者nose_gnome
相关产品推荐
相关产品推荐

