Perché il mio codice funziona da shell interattivo, ma non quando viene eseguito da un file?
-
12-12-2019 - |
Domanda
Sto cercando di utilizzare il modulo pprint
per controllare alcuni vars in Python, che posso usare felicemente usando la shell interattiva e il codice qui sotto:
import pprint
pp = pprint.PrettyPrinter()
stuff = ['cakes','bread','mead']
pp.pprint(stuff)
.
Tuttavia, quando ho messo sopra in generazione pprint.py
ed eseguilo usando python pprint.py
ottengo l'errore:
$ 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'
.
Ciò che è diverso sul modo in cui i moduli vengono chiamati quando si esegue il codice Python da un file rispetto al guscio interattivo?
Soluzione
Hai chiamato il tuo programma PPRINT.PY, quindi alla linea import pprint
cerca di importare se stesso.Succede, ma il tuo pprint.py non contiene nulla chiamato prettyprinter.
Cambia il nome del tuo codice.[E, per essere chiari, elimina qualsiasi file pprint.pyc o pprint.pyo ..]
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow