我正在检查python3.1的JSON模块,目前位于/Lib/json/scanner.py中。文件的顶部是以下行:
from _json import make_scanner as c_make_scanner
在该模块的目录中有五个.py文件:__init__
(两个前导下划线和尾随下划线,格式为粗体)、解码器、编码器、扫描器和工具。没有名为"json“的文件。
我的问题是:在进行导入时,"make_scanner“到底来自哪里?
是的,我对Python非常陌生!
发布于 2010-04-23 04:16:47
它可能来自文件,也可能是内置的。在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。
发布于 2010-04-23 04:05:10
它来自C编译的_json.pyd
(或_json.so
等,取决于平台),它位于sys.path
上的其他地方。你总是可以通过自己导入模块并查看它的__file__
来找出它在你的特定Python安装中的位置,例如:
>>> import _json
>>> _json.__file__
'/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/lib-dynload/_json.so'
如您所见,在我的Python2.6安装中,_json
来自lib/python2.6
的lib-dynload
子目录,该平台上使用的扩展名是.so
。
https://stackoverflow.com/questions/2696125
复制