Ich habe das folgende Verhalten in Python 3.4.2 beobachtet, und ich kann es nicht erklären. Hoffentlich jemand könnte etwas Licht auf die Sache werfen:Importieren von urllib.parse schlägt fehl, wenn Python über die Befehlszeile ausgeführt wird
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'>
Ich habe ein Modul importiert, und eines seiner Attribute gedruckt. Alles funktioniert wie erwartet. Bis jetzt ist das Leben gut.
Jetzt mache ich das Gleiche von der Kommandozeile:
$ 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'
Sagen Sie, was ?! so soll das nicht funktionieren.
Ok, vielleicht ist das ein pythonweites Verhalten; vielleicht werden Module nicht sofort importiert, wenn das Flag -c
verwendet wird. Lassen Sie uns ein anderes Modul versuchen:
$ python -c 'import datetime; print(datetime.datetime)'
<class 'datetime.datetime'>
Was ?! Wie funktioniert es für datetime
und nicht für urllib
? Ich benutze die gleiche Version von Python in beiden Orten (3.4.2)
Hat jemand irgendwelche Gedanken dazu?
EDIT:
Per einem der Kommentare:
$ 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
Und
$ which -a python
/Users/ashwin/.pyenv/shims/python
/Library/Frameworks/Python.framework/Versions/2.7/bin/python
/usr/bin/python
/usr/bin/python
Sie möchten die Ausgabe von 'die -a ipython' und' die -a python' – cel
@cel hinzufügen: Ich verstehe nicht, wie das helfen würde, aber ich habe es – inspectorG4dget
So hinzugefügt ' Python -m IPython -c 'Importiere Datetime; print (datetime.datetime) ''und' python -c' import datetime; print (datetime.datetime) gibt andere Ergebnisse? – cel