"из _json import ..." - python - PullRequest
       11

"из _json import ..." - python

0 голосов
/ 23 апреля 2010

Я проверяю модуль JSON в python 3.1 и в настоящее время нахожусь в /Lib/json/scanner.py. Вверху файла находится следующая строка:

from _json import make_scanner as c_make_scanner

В каталоге модуля пять файлов .py: __init__ (два начальных и конечных подчеркивания, форматирование выделено жирным шрифтом), декодер, кодировщик, сканер и инструмент. Нет файла с именем "json".

Мой вопрос: при импорте, откуда именно происходит "make_scanner"?

Да, я новичок в Python!

Ответы [ 2 ]

5 голосов
/ 23 апреля 2010

Это происходит из 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.

1 голос
/ 23 апреля 2010

Это может быть файл или встроенный файл. В 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 браузер .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...