本指南是一个全面的资源贡献 给Python的 -为新的和经验丰富的贡献者。这是 保持由维护的Python同一社区。我们欢迎您对Python的贡献!

快速参考

这是设置和添加补丁所需的基本步骤。了解基础知识后,这就是清单。有关完整说明,请参阅安装指南

  1. 安装并设置Git和其他依赖项(有关详细信息,请参见“ 获取安装程序”页面)。

  2. 用叉子CPython的库 到你的GitHub帐户,并获得源代码使用:

    git clone https://github.com/<your_username>/cpython
    cd cpython
  3. 在UNIX和Mac OS上构建Python,请使用:

    ./configure --with-pydebug && make -j
    

    在Windows上使用:

    PCbuild\build.bat -e -d
    

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

  4. 运行测试

    ./python -m test -j3
    

    大多数 Mac OS X系统上,请替换./python 为./python.exe。在Windows上,使用python.bat。在Python 2.7中,替换testtest.regrtest

  5. 创建一个新分支,您将在其中处理该问题,例如:

    git checkout -b fix-issue-12345 master
    

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

  6. 解决问题后,运行测试,然后运行,如果一切正常,请提交。make patchcheck

  7. 将分支推送到GitHub的fork上,并创建一个pull请求bpo-NNNN在请求请求描述中使用发行号。例如:

    bpo-12345: Fix some bug in spam module
    

注意:如本指南“ 许可”部分所述,初次贡献者将需要签署“贡献者许可协议”(CLA)。

快速链接

以下是在贡献Python时可能会经常引用的一些链接:

Python分支的状态

时间表 状态 初版 生命尽头 发布经理
PEP 596 特征 待定 待定 ŁukaszLanga
3.8 人教版569 错误修正 2019-10-14 2024-10 ŁukaszLanga
3.7 PEP 537 错误修正 2018-06-27 2023-06-27 内德·迪利
2.7 PEP 373 错误修正 2010-07-03 2020-01-01 本杰明·彼得森
3.6 PEP 494 安全 2016-12-23 2021-12-23 内德·迪利
3.5 PEP 478 安全 2015-09-13 2020-09-13 拉里·黑斯廷斯

master分支当前是将来的Python 3.9,并且是唯一接受新功能的分支。可以在下载页面上找到每个Python版本的最新版本。

状态:

特征: 接受新功能,错误修正和安全修正。
预发行: 即将发布的功能版本接受了功能修复,错误修复和安全修复。
错误修正: 错误修正和安全修正被接受,新的二进制文件仍被发布。(也称为维护模式或稳定发布)
安全: 仅接受安全修复程序,并且不再发布任何二进制文件,但是可以发布仅源代码的新版本
生命尽头: 释放周期被冻结;没有进一步的变化可以推到它。

斜体字的日期已安排好并且可以调整。

默认情况下,寿命终止是在第一个发行版之后的5年,但是可以由每个分支的发行经理进行调整。对Python 2.7的支持目前已扩展至2020-01-01。早于2.7的版本已达到使用寿命。

另请参阅开发周期页面以获取有关分支的更多信息。

贡献

我们鼓励每个人都为Python做出贡献,因此我们制定了本开发人员指南。如果您在阅读了本指南中的内容后仍然有疑问,那么可以使用Core Python Mentorship组来帮助指导新贡献者完成整个过程。

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

核心开发人员和贡献者都将发现以下有用的指南:

贡献Python指南:

入门后,高级任务和主题:

建议,由于需要上述文件读取。新的贡献者将通过阅读此表中提到的部分来建立对CPython工作流程的理解。您可以停下来感到舒适,然后立即开始贡献,而无需立即阅读和理解这些文档。如果您确实选择跳过文档,请注意,它是在阅读了先前文档的前提下编写的,因此您可能会发现有必要回溯以填写缺少的概念和术语。

提议对Python本身进行更改

改进Python的代码,文档和测试是正在进行的任务,这些任务永远都不会“完成”,因为Python是不断发展的技术体系的一部分。与这些必要的维护活动相比,一项更具挑战性的正在进行的任务是找到以标准库和语言定义的形式使Python成为开发人员工具包中更好的工具的方法。

尽管这些更改比上述更改少得多,但它们确实会发生,并且该过程也作为本指南的一部分进行了描述:

其他口译员的实现

该指南专门为Python参考解释器(也称为CPython)做出了贡献(尽管大多数标准库是用Python编写的,解释器核心是用C编写的,并且最容易与C和C ++生态系统集成)。

还有其他Python实现,每个实现都有不同的重点。像CPython一样,他们总是比开发人员有更多要做的事情。可能有趣的一些主要示例是:

  • PyPy:一个Python解释器,专注于在主要平台上进行高速(JIT编译)操作
  • Jython:一个Python解释器,致力于与Java虚拟机(JVM)环境的良好集成
  • IronPython:一个Python解释器,致力于与.NET和Mono提供的公共语言运行时(CLR)良好集成
  • Stackless:Python解释器专注于提供轻量级微线程,同时仍与CPython特定的扩展模块保持很大程度上兼容

主要资源

其他资源

行为准则

请注意,PSF行为准则涵盖 了Python Software Foundation支持的基础架构上的所有交互 ,其中包括Python自身开发中使用的所有基础架构(例如,邮件列表,问题跟踪器,GitHub等)。总的来说,这意味着无论他们在项目中的地位如何,每个人都应该开放,体贴和尊重他人。

完整目录

Python开发人员指南的更多相关文章

  1. 第六代智能英特尔® 酷睿™ 处理器图形 API 开发人员指南

    欢迎查看第六代智能英特尔® 酷睿™ 处理器图形 API 开发人员指南,该处理器可为开发人员和最终用户提供领先的 CPU 和图形性能增强.各种新特性和功能以及显著提高的性能. 本指南旨在帮助软件开发人员 ...

  2. libjingle开发人员指南

    libjingle开发人员指南 libjingle SDK包含C + +源代码和文档,使您能够设计连接和网络交换数据的应用程序(通过点对点数据连接).该SDK包含代码和示例应用程序,一个Window平 ...

  3. .NET CoreCLR开发人员指南(上)

    1.为什么每一个CLR开发人员都需要读这篇文章 和所有的其他的大型代码库相比,CLR代码库有很多而且比较成熟的代码调试工具去检测BUG.对于程序员来说,理解这些规则和习惯写法非常的重要. 这篇文章让所 ...

  4. Microsoft Orleans 之 开发人员指南

    开发一个Grain 在开发Grain之前请先阅读Grains 这篇文章 Grain 接口 Grains通过调用各自定义在接口中的方法相互作用,一个grain实现了事先定义好的一个或多个接口,grain ...

  5. OAuth 2 开发人员指南

    这是支持OAuth2.0的用户指南.对于OAuth1.0,一切都是不同的,所以看它的用户指南. 本用户指南分为两个部分,第一部分是OAuth2.0提供端(OAuth 2.0 Provider),第二部 ...

  6. OAuth 2 开发人员指南(Spring security oauth2)

    https://github.com/spring-projects/spring-security-oauth/blob/master/docs/oauth2.md 入门 这是支持OAuth2.0的 ...

  7. Prism5.0开发人员指南内容 Contents of the Developer's Guide to Prism Library 5.0 for WPF(英汉对照版)

    The Prism for WPF guide contains the following topics: Prism指南包含以下内容: Download and Setup Prism 下载并安装 ...

  8. Prism5.0开发人员指南内容(纯汉语版)

    Prism指南包含以下内容: 下载并安装Prism Prism5.0新内容 介绍 初始化应用程序 组件间的依赖管理 模块化应用程序开发 实现MVVM模式 进击的MVVM 组合式用户界面 导航 松耦合组 ...

  9. Prism开发人员指南5-WPF开发 文档翻译(纯汉语版)

    2014四月       Prism以示例和文档的形式帮助你更简单的设计丰富灵活易维护的WPF程序.其中使用的设计模式体现了一些重要的设计原则,例如分离关注点和松耦合,Prism帮助你利用松耦合组件设 ...

随机推荐

  1. js 数组 深拷贝 复制 (汇总)

    https://www.cnblogs.com/zhoupengyi/p/6048955.html https://www.cnblogs.com/racyily/p/3532176.html htt ...

  2. xadmin集成DjangoUeditor,以及编辑器的视频路径配置

    稍微讲一下DjangoUeditor的配置,因为之前去找配置的时候东拼西凑的,所以自己写一下自己一步步配置的过程.首先我是再github上去下载下来,因为是当作第三方插件集成到xadmin中,所以不用 ...

  3. C 语言快速入门,21 个小项目足矣!「不走弯路就是捷径」

    C 语言作为大学理工科专业的必修,是很多同学走进编程世界的第一课.那么怎样才能更好的入门 C 语言呢? 下面整理了 21 个 C 语言练手项目,从基础语法开始,逐步深入,通过一个个练手项目,让你轻松驰 ...

  4. Topcoder10566 IncreasingNumber

    IncreasingNumber 一个数是Increasing当且仅当它的十进制表示是不降的,\(1123579\). 求 \(n\) 位不降十进制数中被 \(d\) 整除的有多少个. \(n\leq ...

  5. python 批量打印PDF

    有一批PDF文件,好几百个,每个只打印第2,3页,双面打印. 网上搜索一波,方案如下: 安装Ghostscript,GhostView,使用gsprint命令打印pdf文件. gsprint命令参数说 ...

  6. oracle 年龄分档,不用case when 的方法

    一般我们出分档数据都是case when ,但是如果是对年龄等一些字段进行细分,比如五岁一档,我们如果用case when就会特别麻烦,写的特别多,这里我介绍一种简单的方法,对细分的字段进行处理: 建 ...

  7. Flume高级之自定义MySQLSource

    1 自定义Source说明 Source是负责接收数据到Flume Agent的组件.Source组件可以处理各种类型.各种格式的日志数据,包括avro.thrift.exec.jms.spoolin ...

  8. 题解 UVa10791

    题目大意 多组数据,每组数据给出一个正整数 \(n\),请求出一组数 \(a_1\cdots a_m\),满足 \(LCM_{k=1}^ma_k=n\) 且 \(\sum_{k=1}^ma_k\) 最 ...

  9. 四行公式推完神经网络BP

    据说多推推公式可以防止老年痴呆,(●ˇ∀ˇ●) 偶尔翻到我N年前第一次推导神经网络的博客居然四页纸,感慨毅力! http://blog.sina.com.cn/s/blog_1442877660102 ...

  10. python的numpy.array

    为什么要用numpy Python中提供了list容器,可以当作数组使用.但列表中的元素可以是任何对象,因此列表中保存的是对象的指针,这样一来,为了保存一个简单的列表[1,2,3].就需要三个指针和三 ...