[pyar] Problemas con imports. WTF!!!!

Santiago Basulto santiago.basulto en gmail.com
Dom Jul 15 12:32:05 ART 2012


Confusión mía. Muchas gracias gente!

El día 15 de julio de 2012 12:00, Diego Sarmentero
<diego.sarmentero en gmail.com> escribió:
> El día 15 de julio de 2012 11:49, Santiago Basulto
> <santiago.basulto en gmail.com> escribió:
>> Hola gente,
>>
>> estoy teniendo unos errores muy locos. Sinceramente es la primera vez
>> que me pasa. Les muestro lo que me está pasando con un ejemplo:
>>
>> $ mkdir project
>> $ touch __init__.py
>>
>> $ mkdir p1
>> $ touch p1/__init__.py
>> $ touch p1/m1.py
>> $ vi p1/m1.py
>> $ cat p1/m1.py
>> def test():
>>         print "Hola mundo"
>>
>> Hasta ahí lo que hice fue crear un par de paquetes y poner una función
>> (test) en m1.py.
>>
>> Ahora, trato de llegar a m1.test
>>
>>>>> import p1
>> # Todo OK
>>>>> p1.m1
>> Traceback (most recent call last):
>>   File "<stdin>", line 1, in <module>
>> AttributeError: 'module' object has no attribute 'm1'
>> #WTF!
>>
>> Ahora lo que hice fue agregarle una linea en blanco (\n) a todos los
>> __init__.py y ahora puedo hacer esto:
>>
>>>>> import p1.m1 #OK!
>>>>> p1.m1
>> 'p1.m1'
>>
>> Pero si trato de importar el primer paquete vuelvo a tener el error
>>
>>>>> import p1
>> # Todo OK
>>>>> p1.m1
>> Traceback (most recent call last):
>>   File "<stdin>", line 1, in <module>
>> AttributeError: 'module' object has no attribute 'm1'
>>
>> En resumen. Agregando una linea en blanco al __init__.py arreglo los
>> imports. Pero todavía sigo sin poder acceder a los módulos dentro del
>> paquete.
>>
>> A alguien le pasó algo parecido?
>>
>> --
>> Santiago Basulto.-
>> _______________________________________________
>> pyar mailing list pyar en python.org.ar
>> http://listas.python.org.ar/listinfo/pyar
>>
>> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>>
>> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de Argentina - http://www.usla.org.ar
>
>
> fijate que si podes hacer:
>>>> import p1.m1
> y
>>>> from p1 import m1
>
> Sin necesidad de la linea en blanco, ni nada.
> Pero si solo haces import del modulo, lo que te representaria el
> __init__, no estas teniendo el resto declarado ahi adentro, para eso
> dentro del init tendrias que exponer que es lo que queres mostrar
> haciendo por ejemplo:
> p1/__init__.py:
> import m1
>
> o definir __all__ como se hace en os.py por ejemplo:
> __all__ = ["altsep", "curdir", "pardir", "sep", "extsep", "pathsep", "linesep",
>            "defpath", "name", "path", "devnull",
>            "SEEK_SET", "SEEK_CUR", "SEEK_END"]
>
> Para poder tener esa informacion ahi.
>
> --
> Diego Sarmentero
>
> Blog: http://diegosarmentero.com
> Twitter: http://twitter.com/diegosarmentero
> _______________________________________________
> pyar mailing list pyar en python.org.ar
> http://listas.python.org.ar/listinfo/pyar
>
> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>
> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de Argentina - http://www.usla.org.ar



-- 
Santiago Basulto.-



More information about the pyar mailing list