我想尝试查找 Python 标准库中某些模块的来源,但找不到它们。下载 python tarball 后,我尝试查看模块目录,但它主要包含 .c 文件。我还尝试查看操作系统(mac osx)已经附带的python具有它的模块的目录,那里似乎主要有.pyc和.pyo文件。如果有人可以帮助我,我将不胜感激。
(我尝试了问题How do I find the location of Python module sources?中的建议,但没有运气)
我想尝试查找 Python 标准库中某些模块的来源,但找不到它们。下载 python tarball 后,我尝试查看模块目录,但它主要包含 .c 文件。我还尝试查看操作系统(mac osx)已经附带的python具有它的模块的目录,那里似乎主要有.pyc和.pyo文件。如果有人可以帮助我,我将不胜感激。
(我尝试了问题How do I find the location of Python module sources?中的建议,但没有运气)
在 cpython 中,许多模块是用 C 实现的,而不是用 Python 实现的。您可以在 中找到它们Modules/
,而纯 Python 的位于Lib/
.
在某些情况下(例如json
模块),Python 源代码自己提供模块,并且仅在可用时使用 C 模块(以提高性能)。对于其余模块,您可以查看PyPy 的 implementations。
CPython 的规范存储库是这个 Mercurial 存储库。GitHub 上还有一个 git 镜像。
这将取决于您定义为Standard Library的内容。
...此库参考手册描述了与 Python 一起分发的标准库。它还描述了 Python 发行版中通常包含的一些可选组件。
Python 的标准库非常广泛,提供了广泛的设施,如下面列出的长目录所示。该库包含内置模块(用 C 编写),提供对系统功能的访问,例如 Python 程序员无法访问的文件 I/O,以及用 Python 编写的模块,为发生在日常编程。其中一些模块被明确设计为通过将平台细节抽象为平台中立的 API 来鼓励和增强 Python 程序的可移植性。
如果您采用广泛的标准,Python 文档会明确回答您的要求,我引用:
探索 CPython 的内部结构。
CPython 源代码布局。
本指南概述了 CPython 的代码结构。它作为模块和内置文件位置的摘要。
对于 Python 模块,典型的布局是:
Lib/<module>.py
Modules/_<module>.c
Lib/test/test_<module>.py
Doc/library/<module>.rst
对于仅扩展模块,典型的布局是:
Modules/<module>module.c
Lib/test/test_<module>.py
Doc/library/<module>.rst
对于内置类型,典型的布局是:
Objects/<builtin>object.c
Lib/test/test_<builtin>.py
Doc/library/stdtypes.rst
对于内置函数,典型的布局是:
Python/bltinmodule.c
Lib/test/test_builtin.py
Doc/library/functions.rst
一些例外:
builtin type int is at Objects/longobject.c
builtin type str is at Objects/unicodeobject.c
builtin module sys is at Python/sysmodule.c
builtin module marshal is at Python/marshal.c
Windows-only module winreg is at PC/winreg.c
您可以从安装 Python 的位置获取作为标准库一部分的纯 Python 模块的源代码。
例如:C:\Python27\Lib(在 Windows 上)如果您使用 Windows Installer 进行 Python 安装。
在 Python 安装目录的 Lib 子目录下查找。