Ho osservato il seguente comportamento in Python 3.4.2 e non riesco a spiegarlo. Speriamo che qualcuno potrebbe fare luce sulla questione:import urllib.parse fallisce quando Python viene eseguito dalla riga di comando
In IPython:
In [129]: import urllib
In [130]: print(urllib.parse)
<module 'urllib.parse' from '/Users/ashwin/.pyenv/versions/3.4.2/lib/python3.4/urllib/parse.py'>
ho importato un modulo, e stampato uno dei suoi attributi. Tutto funziona come previsto. Finora, la vita è buona.
Ora, mi fanno la stessa cosa dalla riga di comando:
$ python -c 'import urllib; print(urllib.parse)'
Traceback (most recent call last):
File "<string>", line 1, in <module>
AttributeError: 'module' object has no attribute 'parse'
Dica che cosa ?! non è così che dovrebbe funzionare.
Ok, forse questo è un comportamento a livello di python; forse i moduli non vengono importati immediatamente quando si utilizza il flag -c
. Proviamo un altro modulo:
$ python -c 'import datetime; print(datetime.datetime)'
<class 'datetime.datetime'>
Cosa ?! Come funziona per datetime
e non per urllib
? Sto usando la stessa versione di Python in entrambe le posizioni (3.4.2)
Qualcuno ha qualche idea su questo?
EDIT:
Per uno dei commenti:
$ which -a ipython
/Users/ashwin/.pyenv/shims/ipython
/Library/Frameworks/Python.framework/Versions/2.7/bin/ipython
/usr/local/bin/ipython
/usr/local/bin/ipython
E
$ which -a python
/Users/ashwin/.pyenv/shims/python
/Library/Frameworks/Python.framework/Versions/2.7/bin/python
/usr/bin/python
/usr/bin/python
si consiglia di aggiungere l'output di 'che -a ipython' e' che -a python' – cel
@cel: Non capisco come che avrebbe aiutato, ma ho aggiunto che – inspectorG4dget
Così ' python -m IPython -c 'importa datetime; stampare (datetime.datetime) ''e' python -c' importare datetime; print (datetime.datetime) ''dai risultati diversi? – cel