import urllib.parse falla cuando Python se ejecuta desde la línea de comandos
He observado el siguiente comportamiento en python 3.4.2, y no puedo explicarlo. Esperemos que alguien pueda arrojar algo de luz sobre el asunto:
En 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'>
Importé un módulo e imprimí uno de sus atributos. Todo funciona como se esperaba. Hasta ahora, la vida es buena.
Ahora, hago lo mismo desde la línea de 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'
¡¿Que qué?! no es así como se supone que debe funcionar.
Ok, tal vez este es un comportamiento de todo Python; tal vez los módulos no se importan inmediatamente cuando se usa el-c
bandera. Probemos con otro módulo:
$ python -c 'import datetime; print(datetime.datetime)'
<class 'datetime.datetime'>
¡¿Qué?! ¿Cómo funciona paradatetime
y no paraurllib
? Estoy usando la misma versión de python en ambos lugares (3.4.2)
¿Alguien tiene alguna idea sobre esto?
EDITAR:
Por uno de los comentarios:
$ 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
Y
$ which -a python
/Users/ashwin/.pyenv/shims/python
/Library/Frameworks/Python.framework/Versions/2.7/bin/python
/usr/bin/python
/usr/bin/python