Почему мой код работает из интерактивной оболочки, а не при запуске из файла? - PullRequest
2 голосов
/ 12 марта 2012

Я пытаюсь использовать модуль pprint для проверки некоторых переменных в Python, что я могу с радостью сделать, используя интерактивную оболочку и код ниже:

import pprint
pp = pprint.PrettyPrinter()
stuff = ['cakes','bread','mead']
pp.pprint(stuff)

Однако, когда я ставлювыше в pprint.py и запустить его с помощью python pprint.py Я получаю сообщение об ошибке:

$ python dev/pars/pprint.py 
Traceback (most recent call last):
  File "dev/pars/pprint.py", line 1, in ?
    import pprint
  File "/home/origina2/dev/pars/pprint.py", line 2, in ?
    pp = pprint.PrettyPrinter()
AttributeError: 'module' object has no attribute 'PrettyPrinter'

Чем отличается способ вызова модулей при запуске кода Python из файла по сравнению с интерактивной оболочкой?

1 Ответ

9 голосов
/ 12 марта 2012

Вы назвали свою программу pprint.py, поэтому в строке import pprint она пытается импортировать себя. Это успешно, но ваш pprint.py не содержит ничего, называемого PrettyPrinter.

Измените название вашего кода. [И, чтобы было ясно, удалите все файлы pprint.pyc или pprint.pyo ..]

...