热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Python开发人员指南

本指南是一个全面的资源贡献 给Python的 -为新的和经验丰富的贡献者。这是 保持由维护的Pytho

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

快速参考

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

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

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

    git clone https://github.com//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分支的状态

时间表 状态 初版 生命尽头 发布经理
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指南:

新贡献者 记录员 分类器 核心开发人员
入门 帮助文档 问题跟踪 如何成为核心开发者
在哪里获得帮助 记录Python 对问题进行分类 开发者日志
拉取请求的生命周期 时尚指南 帮助分类问题 接受拉取请求
跑步和写作测试 reStructuredText入门 专家索引 开发周期
解决“简单”问题(及以后) 正在翻译   核心开发人员的动机和隶属关系
跟随Python的发展     核心开发人员办公时间
Git训练营和备忘单      

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

  • 测试套件中的静音警告
  • 修复buildbots发现的问题
  • 覆盖范围扫描
  • 帮助审核打开的请求了解如何查看“拉取请求”
  • 解决“简单”问题(及以后)

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

提议对Python本身进行更改

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

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

  • 添加到Stdlib
  • 更改Python语言

其他口译员的实现

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

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

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

主要资源

  • 编码风格指南
    • PEP 7(C代码样式指南)
    • PEP 8(Python代码样式指南)
  • 问题追踪器
    • 元跟踪器(问题跟踪器的问题跟踪器)
    • 专家索引
  • Buildbot状态
  • 源代码
    • 在线浏览
    • * master *分支的快照
    • 每日OS X安装程序
  • PEP(Python增强建议)
  • 在哪里获得帮助
  • 开发者日志

其他资源

  • 任何人都可以克隆本指南的资源。请参阅 帮助开发人员指南
  • 帮助 …
    • 探索CPython的内部
    • 改变CPython的语法
    • CPython编译器的设计
  • 工具支援
    • gdb支持
    • 用Clang进行动态分析
    • Misc目录中找到各种带有配置文件的工具
    • 有关编辑器及其配置的信息可在Wiki中找到。
  • python.org维护
  • 搜索本指南

行为准则

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

完整目录

  • 1.入门
    • 1.1。安装git
    • 1.2。获取源代码
    • 1.3。编译和构建
      • 1.3.1。UNIX系统
      • 1.3.2。视窗
    • 1.4。安装依赖项
      • 1.4.1。的Linux
      • 1.4.2。macOS和OS X
    • 1.5。再生configure
    • 1.6。解决构建问题
      • 1.6.1。避免重新创建自动生成的文件
    • 1.7。编辑器和工具
    • 1.8。目录结构
  • 2.在哪里获得帮助
    • 2.1。询问#python-dev
    • 2.2。祖利普
    • 2.3。核心导师制
    • 2.4。核心开发人员办公时间
    • 2.5。邮件列表
    • 2.6。提交错误
  • 3.拉取请求的生命周期
    • 3.1。介绍
    • 3.2。快速指南
    • 3.3。分步指南
    • 3.4。做好公关
    • 3.5。 patchcheck
    • 3.6。做好承诺
    • 3.7。发牌
    • 3.8。提交中
    • 3.9。将现有补丁从bpo转换为GitHub
    • 3.10。审核中
      • 3.10.1。如何查看拉取请求
    • 3.11。在GitHub上留下请求请求评论
    • 3.12。取消其他核心开发人员的评论
    • 3.13。提交/拒绝
    • 3.14。贷记
  • 4.运行和写作测试
    • 4.1。跑步
      • 4.1.1。意外跳过
    • 4.2。写作
    • 4.3。基准测试
  • 5.增加测试范围
    • 5.1。常见陷阱
    • 5.2。测量覆盖率
      • 5.2.1。使用coverage.py
      • 5.2.2。使用test.regrtest
    • 5.3。提交问题
    • 5.4。用gcov和lcov测量C代码的覆盖率
  • 6.帮助文档
    • 6.1。Python文档
    • 6.2。帮助解决文件问题
    • 6.3。校对
    • 6.4。帮助开发人员指南
    • 6.5。开发人员指南工作流程
  • 7.编写Python文档
    • 7.1。介绍
    • 7.2。时尚指南
      • 7.2.1。空格的使用
      • 7.2.2。脚注
      • 7.2.3。大写
      • 7.2.4。肯定音
      • 7.2.5。表达经济
      • 7.2.6。安全注意事项(和其他问题)
      • 7.2.7。程式码范例
      • 7.2.8。等效代码
      • 7.2.9。听众
    • 7.3。reStructuredText入门
      • 7.3.1。段落
      • 7.3.2。内联标记
      • 7.3.3。列表和引号
      • 7.3.4。源代码
      • 7.3.5。超连结
      • 7.3.6。栏目
      • 7.3.7。显式标记
      • 7.3.8。指令
      • 7.3.9。脚注
      • 7.3.10。评论
      • 7.3.11。源编码
      • 7.3.12。陷阱
    • 7.4。额外的标记构造
      • 7.4.1。元信息标记
      • 7.4.2。特定于模块的标记
      • 7.4.3。信息单位
      • 7.4.4。显示代码示例
      • 7.4.5。内联标记
      • 7.4.6。交联标记
      • 7.4.7。段落级标记
      • 7.4.8。目录标记
      • 7.4.9。索引生成标记
      • 7.4.10。语法制作展示
      • 7.4.11。换人
    • 7.5。建立文件
      • 7.5.1。使用make / make.bat
      • 7.5.2。使用sphinx构建
    • 7.6。正在翻译
      • 7.6.1。开始新的翻译
      • 7.6.2。PEP 545摘要:
      • 7.6.3。如何获得帮助
      • 7.6.4。翻译常见问题
  • 8.测试套件中的静音警告
  • 9.解决“容易”的问题(及以后)
  • 10.问题追踪
    • 10.1。使用问题跟踪器
      • 10.1.1。检查是否已存在错误
      • 10.1.2。报告问题
      • 10.1.3。了解问题的进度和状态
    • 10.2。对问题跟踪器的解决方案有不同意见
    • 10.3。帮助分类问题
      • 10.3.1。分类报告
      • 10.3.2。审查补丁
      • 10.3.3。查找您可以帮助解决的问题
    • 10.4。在问题跟踪程序上获得“开发人员”角色
    • 10.5。元追踪器
  • 11.对问题进行分类
    • 11.1。Python分流团队
    • 11.2。成为Python Triage团队的成员
      • 11.2.1。PR的GitHub标签
    • 11.3。问题跟踪器中的字段
      • 11.3.1。标题
      • 11.3.2。类型
      • 11.3.3。阶段
      • 11.3.4。组件
      • 11.3.5。版本号
      • 11.3.6。优先
      • 11.3.7。关键词
      • 11.3.8。八卦清单
      • 11.3.9。分配给
      • 11.3.10。依存关系
      • 11.3.11。取代者
      • 11.3.12。状态
      • 11.3.13。解析度
      • 11.3.14。汞库
    • 11.4。在评论中生成特殊链接
    • 11.5。分类检查清单
  • 12.跟随Python的发展
    • 12.1。邮件列表
    • 12.2。祖利普
    • 12.3。IRC
    • 12.4。网志
    • 12.5。这些沟通渠道的行为标准
    • 12.6。为开源参与设定期望
    • 12.7。其他资料库
  • 13.将Python移植到新平台
  • 14.如何成为核心开发人员
    • 14.1。它需要什么
    • 14.2。这是什么意思
    • 14.3。获得提交特权
      • 14.3.1。邮件列表
      • 14.3.2。签署贡献者协议
      • 14.3.3。拉取请求合并
    • 14.4。职责范围
  • 15.开发者日志
    • 15.1。授予或删除访问权限的过程
  • 16.接受拉取请求
    • 16.1。公关准备好了吗?
      • 16.1.1。测试套件是否仍然通过?
      • 16.1.2。补丁清单
    • 16.2。处理他人代码
    • 16.3。贡献者许可协议
    • 16.4。检查是否已收到CLA
    • 16.5。最新消息和新闻条目
    • 16.6。使用Git
      • 16.6.1。活动分支
      • 16.6.2。向后移植更改到较旧的版本
      • 16.6.3。还原合并的拉取请求
  • 17.开发周期
    • 17.1。分行
      • 17.1.1。开发中(主)分支
      • 17.1.2。维修部门
      • 17.1.3。安全部门
      • 17.1.4。报废分公司
    • 17.2。阶段
      • 17.2.1。前阿尔法
      • 17.2.2。Α
      • 17.2.3。贝塔
      • 17.2.4。候选发布者(RC)
      • 17.2.5。最后
    • 17.3。仓库管理
      • 17.3.1。组织存储库策略
      • 17.3.2。组织所有者政策
      • 17.3.3。当前所有者
      • 17.3.4。存储库管理员角色策略
      • 17.3.5。现任管理员
      • 17.3.6。存储库版本管理器角色策略
  • 18.持续整合
    • 18.1。检查自动构建的结果
    • 18.2。稳定性
    • 18.3。与标志有关的故障
    • 18.4。与订单有关的故障
    • 18.5。瞬态故障
    • 18.6。定制建造者
  • 19.添加到Stdlib
    • 19.1。添加到预先存在的模块
    • 19.2。添加一个新模块
      • 19.2.1。可接受的模块类型
      • 19.2.2。要求
      • 19.2.3。提案流程
  • 20.更改Python语言
    • 20.1。符合条件的
    • 20.2。PEP过程
    • 20.3。建议新功能和语言更改
  • 21.专家索引
    • 21.1。标准库
    • 21.2。工具类
    • 21.3。平台类
    • 21.4。
    • 21.5。文档翻译
  • 22. gdb支持
    • 22.1 gdb 7及更高版本
    • 22.2。gdb 6和更早版本
    • 22.3。更新auto-load-safe-path以允许test_gdb运行
  • 23.探索CPython的内部
    • 23.1。CPython源代码布局
    • 23.2。其他参考
  • 24.更改CPython的语法
    • 24.1。抽象
    • 24.2。基本原理
    • 24.3。检查清单
  • 25. CPython编译器的设计
    • 25.1。抽象
    • 25.2。解析树
    • 25.3。抽象语法树(AST)
    • 25.4。内存管理
    • 25.5。将树解析为AST
    • 25.6。控制流程图
    • 25.7。AST到CFG到字节码
    • 25.8。引入新的字节码
    • 25.9。代码对象
    • 25.10。重要档案
    • 25.11。已知的编译器相关实验
    • 25.12。参考文献
  • 26.更新标准库扩展模块
  • 27.覆盖率扫描
    • 27.1。访问分析报告
    • 27.2。建立和上传分析
    • 27.3。已知限制
      • 27.3.1。误报
      • 27.3.2。故意地
    • 27.4。造型
    • 27.5。工作流程
      • 27.5.1。误报和故意问题
      • 27.5.2。积极的问题
    • 27.6。联系
  • 28.使用Clang进行动态分析
    • 28.1。什么是C?
    • 28.2。什么是消毒剂?
    • 28.3。Clang / LLVM设置
      • 28.3.1。下载,构建和安装
    • 28.4。Python构建设置
      • 28.4.1。构建Python
      • 28.4.2。将黑名单(忽略)发现
  • 29.运行一个buildbot工人
    • 29.1。准备buildbot worker设置
    • 29.2。设置buildbot worker
      • 29.2.1。传统的常开机器
      • 29.2.2。潜在工人
    • 29.3。Buildbot工作者操作
    • 29.4。所需端口
    • 29.5。所需资源
    • 29.6。安全注意事项
  • 30.核心开发人员的动机和隶属关系
    • 30.1。出版作品
    • 30.2。此页面的目标
    • 30.3。范围限制
  • 31. Git训练营和备忘单
    • 31.1。派生CPython GitHub存储库
    • 31.2。克隆派生的CPython存储库
    • 31.3。列出远程存储库
    • 31.4。设置您的姓名和电子邮件地址
    • 31.5。autocrlf在Windows上启用
    • 31.6。创建和切换分支
    • 31.7。删除分支
    • 31.8。暂存和提交文件
    • 31.9。还原更改
    • 31.10。藏匿变化
    • 31.11。提交变更
    • 31.12。推动变革
    • 31.13。创建拉取请求
    • 31.14。与上游同步
    • 31.15。从Mercurial向Git应用补丁
    • 31.16。下载他人的补丁
    • 31.17。接受和合并拉取请求
    • 31.18。向后移植合并的更改
    • 31.19。合并前编辑拉取请求
  • 32.附录:主题
    • 32.1。贡献者基础
    • 32.2。核心开发人员
    • 32.3。贡献者的开发工作流程
    • 32.4。编写Python和样式指南
    • 32.5。问题跟踪和分类
    • 32.6。语言深度开发
    • 32.7。测试和持续集成

推荐阅读
  • 恶意软件分析的最佳编程语言及其应用
    本文介绍了学习恶意软件分析和逆向工程领域时最适合的编程语言,并重点讨论了Python的优点。Python是一种解释型、多用途的语言,具有可读性高、可快速开发、易于学习的特点。作者分享了在本地恶意软件分析中使用Python的经验,包括快速复制恶意软件组件以更好地理解其工作。此外,作者还提到了Python的跨平台优势,使得在不同操作系统上运行代码变得更加方便。 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • 本文介绍了C#中生成随机数的三种方法,并分析了其中存在的问题。首先介绍了使用Random类生成随机数的默认方法,但在高并发情况下可能会出现重复的情况。接着通过循环生成了一系列随机数,进一步突显了这个问题。文章指出,随机数生成在任何编程语言中都是必备的功能,但Random类生成的随机数并不可靠。最后,提出了需要寻找其他可靠的随机数生成方法的建议。 ... [详细]
  • Win10下游戏不能全屏的解决方法及兼容游戏列表
    本文介绍了Win10下游戏不能全屏的解决方法,包括修改注册表默认值和查看兼容游戏列表。同时提供了部分已经支持Win10的热门游戏列表,帮助玩家解决游戏不能全屏的问题。 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • 本文讨论了clone的fork与pthread_create创建线程的不同之处。进程是一个指令执行流及其执行环境,其执行环境是一个系统资源的集合。在调用系统调用fork创建一个进程时,子进程只是完全复制父进程的资源,这样得到的子进程独立于父进程,具有良好的并发性。但是二者之间的通讯需要通过专门的通讯机制,另外通过fork创建子进程系统开销很大。因此,在某些情况下,使用clone或pthread_create创建线程可能更加高效。 ... [详细]
  • 预备知识可参考我整理的博客Windows编程之线程:https:www.cnblogs.comZhuSenlinp16662075.htmlWindows编程之线程同步:https ... [详细]
  • 本文介绍了一个免费的asp.net控件,该控件具备数据显示、录入、更新、删除等功能。它比datagrid更易用、更实用,同时具备多种功能,例如属性设置、数据排序、字段类型格式化显示、密码字段支持、图像字段上传和生成缩略图等。此外,它还提供了数据验证、日期选择器、数字选择器等功能,以及防止注入攻击、非本页提交和自动分页技术等安全性和性能优化功能。最后,该控件还支持字段值合计和数据导出功能。总之,该控件功能强大且免费,适用于asp.net开发。 ... [详细]
  • 如何实现JDK版本的切换功能,解决开发环境冲突问题
    本文介绍了在开发过程中遇到JDK版本冲突的情况,以及如何通过修改环境变量实现JDK版本的切换功能,解决开发环境冲突的问题。通过合理的切换环境,可以更好地进行项目开发。同时,提醒读者注意不仅限于1.7和1.8版本的转换,还要适应不同项目和个人开发习惯的需求。 ... [详细]
  • 全面介绍Windows内存管理机制及C++内存分配实例(四):内存映射文件
    本文旨在全面介绍Windows内存管理机制及C++内存分配实例中的内存映射文件。通过对内存映射文件的使用场合和与虚拟内存的区别进行解析,帮助读者更好地理解操作系统的内存管理机制。同时,本文还提供了相关章节的链接,方便读者深入学习Windows内存管理及C++内存分配实例的其他内容。 ... [详细]
  • 本文介绍了一种图的存储和遍历方法——链式前向星法,该方法在存储带边权的图时时间效率比vector略高且节省空间。然而,链式前向星法存图的最大问题是对一个点的出边进行排序去重不容易,但在平行边无所谓的情况下选择这个方法是非常明智的。文章还提及了图中搜索树的父子关系一般不是很重要,同时给出了相应的代码示例。 ... [详细]
  • 开发笔记:spring boot项目打成war包部署到服务器的步骤与注意事项
    本文介绍了将spring boot项目打成war包并部署到服务器的步骤与注意事项。通过本文的学习,读者可以了解到如何将spring boot项目打包成war包,并成功地部署到服务器上。 ... [详细]
author-avatar
Sek_5123_533_477
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有