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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 05:28:12