[pyar] sobre import en paquetes al mismo nivel

Joaquín Sorianello listas en joac.com.ar
Jue Jun 6 17:38:18 ART 2013


2013/6/6 Joaquín Sorianello <listas en joac.com.ar>

>
>
>
> 2013/6/6 anthony <asotolongo en uci.cu>
>
>> Hola Colegas les escribo para hacerles una pregunta sobre carga de
>> paquetes con import
>>
>> tengo dos directorios que son paquetes con su respectivo __init__.py y
>> están al mismo nivel ambos.
>>
>> ejemplo:
>> proyecto
>>     paquete1
>>     paquete2
>>
>> tengo una clase dentro de paquete1 que necesita de una función o clase en
>> paquete2
>>
>> #clase que esta dentro de paquete1
>> import paquete2.algo
>>
>> class clase1():
>>     def __init__(self):
>>         self.datos=algo()
>>
>>
>>
>> #paquete2
>> def algo()
>>     print 'hola'
>>
>>
>> el tema es que me dice que el siguiente error
>>
>>  import paquete2.algo
>> ImportError: No module named algo
>>
>>
>> entiendo el error, lo que no se es como resolver el tema... , es decir
>> como llamar una función o clase desde un paquete que están al mismo nivel
>>
>>
> Yo me leeria: http://www.python.org/dev/peps/pep-0328/ que habla
> justamente de eso:
>
> en mi ejemplo me armé:
>
> ☁  imports  tree
> .
> |-- paquete
> |   |-- bar
> |   |   `-- __init__.py
> |   |-- foo
> |   |   `-- __init__.py
> |   `-- __init__.py
> `-- test.py
>
>
> ☁  imports  cat test.py
> from paquete import foo
>
> print "Esto fue un ejemplo"
> ☁  imports  cat paquete/foo/__init__.py
> from ..bar import saludo
>
> print saludo()
> ☁  imports  cat paquete/bar/__init__.py
>
> def saludo():
>     return "Soy el modulo bar"
>
> El __init__.py dentro de paquete esta vacío, es para que sea un módulo
>
> Es importante tener en cuenta que si los submodulos no están dentro de un
> paquete, los imports relativos se rompen...
>
> Saludos!
>

Faltó la ejecución:

☁  imports  python2 test.py
Soy el modulo bar
Esto fue un ejemplo

Si no estan dentro de un package, el error es de esta pinta:

☁  imports  python2 test.py
Traceback (most recent call last):
  File "test.py", line 1, in <module>
    import foo
  File "/home/joac/ReposFun/imports/foo/__init__.py", line 1, in <module>
    from ..bar import saludo
ValueError: Attempted relative import beyond toplevel package



-- 
Joaquín Sorianello
A.K.A. Joac
@_joac
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20130606/45fed8aa/attachment.html>


More information about the pyar mailing list