2010-04-23 139 views
0

我正在检查python 3.1的JSON模块,目前在/Lib/json/scanner.py中。在文件的顶部是以下行:“from _json import ...” - python

from _json import make_scanner as c_make_scanner 

有在模块的目录5个.py文件:__init__(二开头和结尾的下划线,它的格式为粗体),解码器,编码器,扫描仪和工具。没有名为“json”的文件。

我的问题是:在进行导入时,“make_scanner”的来源究竟是什么?

是的,我对Python很新!

回答

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

+0

我收到相同的''模块'对象没有属性'__file__'“消息。这是否意味着无法看到make_scanner? – GlenCrawford 2010-04-23 04:57:05

5

它来自一个C编译的_json.pyd(或_json.so等等,取决于平台),它位于sys.path其他地方。你总是可以找出是在特定的Python安装自行导入模块,并查看其__file__,如:

>>> import _json 
>>> _json.__file__ 
'/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/lib-dynload/_json.so' 

正如你看到的,我安装的Python 2.6,_json来自lib-dynload子目录lib/python2.6,此平台上使用的扩展名是.so

相关问题