【问题标题】:"from _json import..." - python“从 _json 导入...” - python
【发布时间】:2023-03-24 09:54:01
【问题描述】:

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

from _json import make_scanner as c_make_scanner

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

我的问题是:在进行导入时,“make_scanner”究竟是从哪里来的?

是的,我对 Python 很陌生!

【问题讨论】:

    标签: python json import module


    【解决方案1】:

    它来自一个 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'
    

    如您所见,在我安装的 Python 2.6 中,_json 来自lib/python2.6lib-dynload 子目录,而在此平台上使用的扩展名是.so

    【讨论】:

      【解决方案2】:

      它可能来自一个文件,也可能是内置的。在 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

      【讨论】:

      • 我收到相同的“'模块'对象没有属性'文件'”消息。这是否意味着没有办法看到make_scanner?
      猜你喜欢
      • 1970-01-01
      • 2019-02-06
      • 2021-04-15
      • 2018-08-19
      • 2013-04-16
      • 2012-06-21
      • 2016-04-15
      • 2013-08-12
      • 1970-01-01
      相关资源
      最近更新 更多