python/cpython

GitHub: python/cpython

Python 编程语言的官方参考实现(C 语言编写),提供完整的解释器、标准库和跨平台构建支持。

Stars: 73226 | Forks: 34735

# 这是 Python 版本 3.16.0 alpha 0 .. image:: https://github.com/python/cpython/actions/workflows/build.yml/badge.svg?branch=main&event=push :alt: GitHub Actions 上的 CPython 构建状态 :target: https://github.com/python/cpython/actions .. image:: https://dev.azure.com/python/cpython/_apis/build/status/Azure%20Pipelines%20CI?branchName=main :alt: Azure DevOps 上的 CPython 构建状态 :target: https://dev.azure.com/python/cpython/_build/latest?definitionId=4&branchName=main .. image:: https://img.shields.io/badge/discourse-join_chat-brightgreen.svg :alt: Python Discourse 聊天 :target: https://discuss.python.org/ 版权所有 © 2001 Python 软件基金会。保留所有权利。 有关进一步的版权和许可信息,请参阅本文件的结尾。 .. contents:: ## 常规信息 - 网站:https://www.python.org - 源代码:https://github.com/python/cpython - 问题追踪器:https://github.com/python/cpython/issues - 文档:https://docs.python.org - 开发者指南:https://devguide.python.org/ ## 使用 Python 可安装的 Python 套件以及有关使用 Python 的信息,可以在 `python.org`_ 获取。 .. _python.org: https://www.python.org/ ## 构建说明 在 Unix、Linux、BSD、macOS 和 Cygwin 上:: ``` ./configure make make test sudo make install ``` 这会将 Python 安装为 ``python3``。 你可以向 configure 脚本传递许多选项;运行 ``./configure --help`` 以了解更多信息。在不区分大小写的 macOS 文件系统和 Cygwin 上, 可执行文件名为 ``python.exe``;在其他地方则只是 ``python``。 构建完整的 Python 安装需要使用各种额外的第三方库, 具体取决于你的构建平台和 configure 选项。并非所有标准库模块都可以在所有平台上构建或使用。有关各种 Linux 发行版和 macOS 依赖项的当前详细信息,请参阅 `开发者指南`_ 中的 `安装依赖项 `_ 章节。 在 macOS 上,有与 macOS framework 和 universal 构建相关的额外 configure 和构建选项。请参阅 `Mac/README.rst `_。 在 Windows 上,请参阅 `PCbuild/readme.txt `_。 要构建 Windows 安装程序,请参阅 `Tools/msi/README.txt `_。 如果你愿意,你可以创建一个子目录并从那里调用 configure。 例如:: ``` mkdir debug cd debug ../configure --with-pydebug make make test ``` (如果你*还*在顶层目录中进行构建,这将失败。你应该先在顶层目录执行一次 ``make clean``。) 要获得 Python 的优化构建,请在运行 ``make`` 之前执行 ``configure --enable-optimizations``。 这会设置默认的 make 目标以启用 Profile Guided Optimization (PGO),并可用于在某些平台上自动启用 Link Time Optimization (LTO)。 有关更多详细信息,请参阅以下章节。 ## Profile Guided Optimization PGO 利用了最新版本的 GCC 或 Clang 编译器。如果使用它, 无论是通过 ``configure --enable-optimizations`` 还是通过手动运行 ``make profile-opt``(无论 configure 标志如何),优化的构建过程都会执行以下步骤: 整个 Python 目录会清理掉之前编译可能产生的临时文件。 使用适合每种类型的编译器标志构建一个带有插桩的(instrumented)解释器版本。请注意,这只是一个中间步骤。此步骤生成的二进制文件不适合实际工作负载,因为其内部嵌入了性能分析指令。 构建带有插桩的解释器后,Makefile 将运行训练工作负载。这是为了对解释器的执行进行性能分析所必需的。另请注意,在此步骤中可能出现的任何输出(stdout 和 stderr)都将被抑制。 最后一步是使用从带有插桩的解释器中收集到的信息来构建实际的解释器。最终结果将是一个经过优化的 Python 二进制文件;适合分发或生产安装。 ## Link Time Optimization 通过 configure 的 ``--with-lto`` 标志启用。LTO 利用最新编译器工具链在构建最终可执行文件或共享库时跨越原本任意的 ``.o`` 文件边界进行优化的能力,从而获得额外的性能提升。 ## 新变化 我们在 `Python 3.16 的新变化 `_ 文档中全面概述了这些变化。如需更详细的更新日志,请阅读 `Misc/NEWS `_,但要全面了解变更,只能通过查阅 `提交历史 `_。 如果你想安装多个版本的 Python,请参阅下面标题为“安装多个版本”的章节。 ## 文档 `Python 3.16 文档 `_ 可在线获取,每日更新。 它也可以下载为多种格式以便更快地访问。文档可以下载为 HTML、EPUB 和 reStructuredText 格式;后一种版本主要面向文档作者、翻译人员以及有特殊格式要求的人。 有关构建 Python 文档的信息,请参阅 `Doc/README.rst `_。 ## 测试 要测试解释器,请在顶层目录中输入 ``make test``。 测试集会产生一些输出。你通常可以忽略有关由于无法导入可选功能而跳过测试的消息。如果打印了有关测试失败的消息,或者产生了 traceback 或核心转储,则说明存在问题。 默认情况下,测试被阻止过度使用磁盘空间和内存等资源。要启用这些测试,请运行 ``make buildbottest``。 如果任何测试失败,你可以在 verbose 模式下重新运行失败的测试。例如,如果 ``test_os`` 和 ``test_gdb`` 失败,你可以运行:: ``` make test TESTOPTS="-v test_os test_gdb" ``` 如果失败仍然存在,并且看起来是 Python 的问题而不是你的环境问题,你可以 `提交 Bug 报告 `_,并包含该命令的相关输出以展示该问题。 有关运行测试的更多信息,请参阅 `运行和编写测试 `_。 ## 安装多个版本 在 Unix 和 Mac 系统上,如果你打算使用相同的安装前缀(configure 脚本的 ``--prefix`` 参数)安装多个版本的 Python,你必须注意你的主要 python 可执行文件不要被其他版本的安装所覆盖。使用 ``make altinstall`` 安装的所有文件和目录都包含主版本号和次版本号,因此可以共存。``make install`` 还会创建 ``${prefix}/bin/python3``,它指向 ``${prefix}/bin/python3.X``。如果你打算使用相同的前缀安装多个版本,你必须决定哪个版本(如果有)是你的“主要”版本。使用 ``make install`` 安装该版本。使用 ``make altinstall`` 安装所有其他版本。 例如,如果你想安装 Python 2.7、3.6 和 3.15,并以 3.15 作为主要版本,你应该在 3.15 的构建目录中执行 ``make install``,而在其他目录中执行 ``make altinstall``。 ## 发布计划 有关 Python 3.16 发布的详细信息,请参阅 `PEP 826 `__。 ## 版权和许可信息 版权所有 © 2001 Python 软件基金会。保留所有权利。 版权所有 © 2000 BeOpen.com。保留所有权利。 版权所有 © 1995-2001 Corporation for National Research Initiatives。保留所有权利。 版权所有 © 1991-1995 Stichting Mathematisch Centrum。保留所有权利。 请参阅 `LICENSE `_ 以获取有关此软件的历史记录、使用条款和条件,以及所有保证免责声明的信息。 此 Python 发行版*不*包含 GNU General Public License (GPL) 代码,因此可用于专有项目。其中有与某些 GNU 代码的接口,但这些完全是可选的。 此处引用的所有商标均归其各自所有者所有。
标签:CPython, Python, 底层开发, 无后门, 编程语言, 解释器, 逆向工具