我正在检查python 3.1的JSON模块,目前在/Lib/json/scanner.py中。在文件的顶部是以下行:
from _json import make_scanner as c_make_scanner
模块目录中有五个.py文件:__init__
(两个前导和尾部下划线,格式为粗体),解码器,编码器,扫描仪和工具。没有名为“json”的文件。
我的问题是:在进行导入时,究竟“make_scanner”来自何处?
是的,我是Python的新手!
答案 0 :(得分:5)
它来自位于_json.pyd
其他位置的C编译的_json.so
(或sys.path
等等,具体取决于平台)。通过自己导入模块并查看其__file__
,您可以随时找到特定Python安装的位置,例如:
>>> import _json
>>> _json.__file__
'/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/lib-dynload/_json.so'
如您所见,在我安装的Python 2.6中,_json
来自lib-dynload
的{{1}}子目录,此平台上使用的扩展名为lib/python2.6
。< / p>
答案 1 :(得分:1)
它可能来自文件,也可能是内置的。在Windows上,它似乎是内置的。
Python 3.1.2 (r312:79149, Mar 21 2010, 00:41:52) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import _json
>>> _json.__file__
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute '__file__'
并且目前没有_json.pyd
或_json.dll
。
如果您想查看来源,在您的计算机上创建二进制文件是不相关的 - 您需要SVN browser。