我如何了解一个给定的Python模块的源文件安装在哪里?Windows上的方法和Linux上的方法不同吗?
我特别试图寻找datetime模块的源代码,但我对更一般的答案也感兴趣。
我如何了解一个给定的Python模块的源文件安装在哪里?Windows上的方法和Linux上的方法不同吗?
我特别试图寻找datetime模块的源代码,但我对更一般的答案也感兴趣。
当前回答
对于一个纯python模块,你可以通过查看module.__file__找到源代码。 然而,datetime模块是用C语言编写的,因此datetime模块是用C语言编写的。__file__指向一个.so文件(没有datetime. so文件)。__file__在Windows上),因此,你不能看到源代码。
如果你下载一个python源tarball并提取它,模块的代码可以在modules子目录中找到。
例如,如果你想找到python 2.6的datetime代码,你可以查看
Python-2.6/Modules/datetimemodule.c
你也可以在github上找到这个文件的最新版本 https://github.com/python/cpython/blob/main/Modules/_datetimemodule.c
其他回答
并非所有的python模块都是用python编写的。Datetime恰好是其中之一,并且(在linux上)是Datetime。
你必须将源代码下载到python标准库才能得到它。
对于一个纯python模块,你可以通过查看module.__file__找到源代码。 然而,datetime模块是用C语言编写的,因此datetime模块是用C语言编写的。__file__指向一个.so文件(没有datetime. so文件)。__file__在Windows上),因此,你不能看到源代码。
如果你下载一个python源tarball并提取它,模块的代码可以在modules子目录中找到。
例如,如果你想找到python 2.6的datetime代码,你可以查看
Python-2.6/Modules/datetimemodule.c
你也可以在github上找到这个文件的最新版本 https://github.com/python/cpython/blob/main/Modules/_datetimemodule.c
在windows上,你可以找到python模块的位置,如下所示:E找到rest_framework模块
从标准库尝试imp.find_module
>>> import imp
>>> imp.find_module('fontTools')
(None, 'C:\\Python27\\lib\\site-packages\\FontTools\\fontTools', ('', '', 5))
>>> imp.find_module('datetime')
(None, 'datetime', ('', '', 6))
看看这个漂亮的"cdp"命令,cd到包含指定Python模块源代码的目录:
cdp () {
cd "$(python -c "import os.path as _, ${1}; \
print _.dirname(_.realpath(${1}.__file__[:-1]))"
)"
}