Python 开发者指南

本指南是为 贡献 Python 提供的全面资源,适用于新老贡献者。它由维护 Python 的同一社区 维护。我们欢迎您为 Python 做出贡献!

快速参考

以下是设置和提交补丁所需的基本步骤。一旦您了解了基础知识,这将作为清单。有关完整说明,请参阅 设置指南

  1. 安装并设置 Git 和其他依赖项(有关详细信息,请参阅 Git 设置 页面)。

  2. CPython 存储库 分叉到您的 GitHub 帐户,并使用以下方法 获取源代码

    git clone https://github.com/<your_username>/cpython
    cd cpython
    
  3. 构建 Python

    ./configure --with-pydebug && make -j
    
    ./configure --with-pydebug && make -j
    
    PCbuild\build.bat -e -d
    

    另请参阅 更详细的说明如何安装和构建依赖项,以及 UnixmacOSWindows 的特定于平台的页面。

  4. 运行测试:

    ./python -m test -j3
    
    ./python.exe -m test -j3
    

    注意:大多数 macOS 系统使用 ./python.exe 以避免与 Python 目录的文件名冲突。

    .\python.bat -m test -j3
    
  5. 创建一个新分支,您的工作将针对该问题,例如

    git checkout -b fix-issue-12345 main
    

    如果问题尚不存在,请 创建。琐碎的问题(例如拼写错误修复)不需要创建任何问题。

  6. 修复问题后,运行测试和 patchcheck

    make patchcheck
    
    make patchcheck
    
    .\python.bat Tools\patchcheck\patchcheck.py
    

    如果一切正常,请提交。

  7. 在 GitHub 上推送您的 fork 分支并 创建拉取请求。在拉取请求描述中使用 gh-NNNN 包含问题编号。例如

    gh-12345: Fix some bug in spam module
    
  8. 将新闻条目作为单独的文件添加到 Misc/NEWS.d 目录中。新闻条目可以通过使用 blurb-itblurb 工具及其 blurb add 命令来创建。请在 存储库 中详细了解 blurb

注意

首次贡献者需要签署贡献者许可协议 (CLA),如本指南的 许可 部分所述。

贡献

我们鼓励每个人为 Python 做贡献,这就是我们编写此开发者指南的原因。如果你在查看本指南中的材料后仍有疑问,那么 核心 Python 指导 小组可以帮助指导新贡献者完成此过程。

来自 Python 社区的许多个人为 开源指南 中的一系列优秀指南做出了贡献。

核心开发者和贡献者都会发现以下指南很有用

为 Python 做贡献的指南

我们建议根据需要阅读本指南中的文档。你可以在你感到满意的地方停止,并在不立即阅读和理解所有这些文档的情况下开始做出贡献。如果你确实选择在文档中跳过,请注意,它是在假设已经阅读了前面的文档的情况下编写的,因此你可能需要回溯以填补缺失的概念和术语。

提议对 Python 本身进行更改

改进 Python 的代码、文档和测试是永无止境的持续任务,因为 Python 作为不断发展的技术系统的一部分而运行。比这些必要的维护活动更具挑战性的持续任务是找到方法,以标准库和语言定义的形式,使 Python 成为开发者工具包中更好的工具。

虽然这类更改比上述更改罕见得多,但它们确实会发生,并且该过程也作为本指南的一部分进行了描述

其他解释器实现

本指南专门用于为 Python 引用解释器(也称为 CPython)做出贡献(虽然标准库的大部分是用 Python 编写的,但解释器核心是用 C 编写的,并且最容易与 C 和 C++ 生态系统集成)。

还有其他 Python 实现,每个实现都有不同的重点。与 CPython 一样,他们总是希望做的事情比他们有开发者来处理的事情更多。一些可能感兴趣的主要示例是

  • PyPy:一个专注于在主要平台上进行高速(JIT 编译)操作的 Python 解释器

  • Jython:一个专注于与 Java 虚拟机 (JVM) 环境良好集成的 Python 解释器

  • IronPython:一个专注于与 .NET 和 Mono 提供的公共语言运行时 (CLR) 良好集成的 Python 解释器

  • Stackless:一个专注于提供轻量级微线程的 Python 解释器,同时在很大程度上与 CPython 特定的扩展模块兼容

  • MicroPython:一个微小的 Python 解释器,具有 Python 标准库的一小部分,经过优化,可以在微控制器和受限环境中运行。

  • CircuitPython:MicroPython 的一个分支,旨在简化在低成本微控制器板上进行实验和学习编码。

关键资源

其他资源

行为准则

请注意,Python 软件基金会支持的基础设施上的所有互动都 涵盖PSF 行为准则 中,其中包括用于开发 Python 本身的所有基础设施(例如邮件列表、问题跟踪器、GitHub 等)。总的来说,这意味着无论项目中的职位如何,每个人都应该开放、体贴和尊重他人。

Python 分支状态

已移至 Python 版本状态

完整目录