Diseñar rutas de importación en Python, recta y simple?

Si un grupo de desarrolladores de Python quiere poner su código compartido en algún lugar, en una estructura jerárquica, ¿cuál es la estructura y cuál es la syntax de “importación” relacionada?

¿Funciona también la referencia de estilo java en Python? Es decir, ¿los directorios corresponden a puntos?

¿Qué es la configuración estándar para una biblioteca de código Python solo para uso interno y cuál es la syntax para las importaciones desde esa área de la biblioteca, digamos 3 niveles de profundidad?

He leído Learning Python, vi PYTHONPATH, he estado jugueteando con el código durante unas semanas, me encanta, pero soy más denso en “importar” más allá de los casos triviales. Si es demasiado general, envíame de vuelta a los libros.

Si un grupo de desarrolladores de Python quiere poner su código compartido en algún lugar, en una estructura jerárquica, ¿cuál es la estructura y cuál es la syntax de “importación” relacionada?

Lo pones en tu directorio C: \ python26 \ Lib \ site-packages \ bajo tu propia carpeta.

Dentro de esa carpeta debe incluir un archivo __init__.py que se ejecutará al importar, esto puede estar vacío.

¿Funciona también la referencia de estilo java en Python? Es decir, ¿los directorios corresponden a puntos?

Sí, siempre y cuando los directorios contengan archivos __init__.py.

¿Qué es la configuración estándar para una biblioteca de código Python solo para uso interno y cuál es la syntax para las importaciones desde esa área de la biblioteca, digamos 3 niveles de profundidad?

MyCompany/MyProject/ -> import MyCompany.MyProject 

Lo que hacemos

Desarrollo

  • c: \ someroot \ project \ thing__init __. py # hace de la cosa un paquete

  • c: \ someroot \ project \ thing \ foo.py

  • c: \ someroot \ project \ thing \ bar.py

Nuestro “entorno” (ambientado de diversas maneras).

 SET PYTHONPATH="C:\someroot\project" 

Un archivo en el que estamos trabajando

  import thing.foo import thing.bar 

Despliegue

  • /opt/someroot/project/project-1.1/thing/ init .py # hace que la cosa sea un paquete

  • /opt/someroot/project/project-1.1/thing/foo.py

  • /opt/someroot/project/project-1.1/thing/bar.py

Nuestro “entorno” (ambientado de diversas maneras).

 SET PYTHONPATH="/opt/someroot/project/project-1.1" 

Esto permite que se implementen varias versiones una al lado de la otra.

Cada una de las diversas “cosas” está diseñada para ser paquetes separados y reutilizables.