“来自_json import ...” - python

时间:2010-04-23 04:02:20

标签: python json import module

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

from _json import make_scanner as c_make_scanner

模块目录中有五个.py文件:__init__(两个前导和尾部下划线,格式为粗体),解码器,编码器,扫描仪和工具。没有名为“json”的文件。

我的问题是:在进行导入时,究竟“make_scanner”来自何处?

是的,我是Python的新手!

2 个答案:

答案 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