¿Es posible desarrollar el código de un subpaquete en un directorio totalmente independiente?

Chema Cortés py en ch3m4.org
Jue Nov 25 10:18:53 CET 2004


El Miércoles, 24 de Noviembre de 2004 17:20, Jose escribió:
> Imaginaos que tengo la siguiente estructura de directorios:
>
> 	/dir1/
> 		/paqueteA/
> 			__init__.py
> 			paquete1/
> 				__init__.py
> 				modulo1.py
> 			paquete2/
> 				__init__.py
> 				modulo2.py
> 	/dir2/
> 		/paqueteA/
> 			__init__.py
> 			paquete3/
> 				__init__.py
> 				modulo3.py
>
> He probado definiendo PYTHONPATH así, pero no funciona:
> 	export PYTHONPATH=/dir1:/dir2
>
> Creo recordar que Python va asociando nombres de dominio con directorios
> y, cada vez que lo precisa, realiza una búsqueda por la lista
> resultante. ¿Sabéis de alguna forma de engañar a este proceso o de
> alguna otra alternativa?

A partir del python 2.3 tienes el módulo 'pkgutil' que sirve para lo que 
necesitas. En el __init__.py de los dos paquetes 'paqueteA' pones lo 
siguiente:

  from pkgutil import extend_path
  __path__=extend_path(__path__,__name__)


Luego, tan sólo debes manipular el sys.path como es costumbre (con sys.path ó 
a través del PYTHONPATH).

Tal como lo tienes hecho, cuando...

  from paqueteA import paquete3

...primero mira en dir1/paqueteA y como ve que allí no está se irá al 
dir2/paqueteA


> ¿Es posible que desde 'modulo2.py' pueda importar objetos de
> paqueteA.paquete1.modulo1 y de paqueteA.paquete3.modulo3?.

No hay problema ya que ambos paquetes están relacionados "lógicamente" a 
través de su padre común.
------------ próxima parte ------------
A non-text attachment was scrubbed...
Name: no disponible
Type: application/pgp-signature
Size: 189 bytes
Desc: no disponible
URL: <http://mail.python.org/pipermail/python-es/attachments/20041125/a861a58a/attachment.pgp>
------------ próxima parte ------------
_______________________________________________
Python-es mailing list
Python-es en aditel.org
http://listas.aditel.org/listinfo/python-es


Más información sobre la lista de distribución Python-es