[pyar] Importación de módulos
Alejandro Santos
listas en alejolp.com
Vie Feb 27 04:44:24 ART 2015
2015-02-27 0:41 GMT+01:00 Leandro E. Colombo Viña <colomboleandro en gmail.com>:
>
> app/
> run.py
> controlador/
> __init__.py
> controlador.py
> db/
> __init__.py
> db.py
> monitor/
> __init__.py
> monitor.py
>
> La idea es la siguiente: la app se corre desde run.py, es una aplicación web
> en Flask que consulta una base de datos y controla unos dispositivos
> electrónicos. En monitor está toda la parte web y lo que sería la interfaz
> de usuario. En db está la configuración de la base de datos (ahí se importa
> el conector y está la clase que maneja la conexión) que usaría tanto el
> monitor como el controlador. Y en controlador está todo lo necesario para
> comunicarse con la electrónica.
>
La estructura que elegiste me suena muy parecida a Java, donde en Java
cada paquete es un directorio aparte.
¿Por qué tenés tres directorios, controlador, db, monitor? ¿Pensás
tenés más controladores, bases de datos y monitores?
De otra forma, con tener algo así debería alcanzar:
app/
run.py
controlador.py
db.py
monitor.py
Recién cuando tengas varios modulos que lógicamente sean parecidos,
por ejemplo si tenés más de media docena de dispositivos electrónicos
y el código lo repartís en varios archivos, es cuando le veo sentido a
hacer un directorio aparte. Lo mismo con los otros módulos, db y
controlador.
> El tema es que queremos ver cuál es la mejor manera de realizar la
> importación de los parámetros de configuración de la base de datos para
> ambos paquetes (monitor y controlador).
¿Dónde y cómo están estos parámetros? ¿Es un archivo .ini, xml?
> Recomiendan usar importaciones relativas? O cargar en el sys.path los
> directorios donde estan los paquetes e importarlos así?
>
No, no modifiquen sys.path a menos que entiendan todas las
consecuencias de hacerlo. Sys.path es para configurar diferentes rutas
bases de colecciones de paquetes y librerías, eventualmente la raíz de
tu aplicación, y es lo que usa virtualenv para hacer su magia.
La consecuencia más importante y grave es que vas a tener aliasing de
módulos. Si en tu sys.path tenés tanto el path a "app" como a
"app/controlador" vas a poder importar el modulo controlador.py de dos
formas diferentes, y esto es malo porque para Python van a ser dos
módulos y dos tipos distintos.
--
Alejandro Santos
More information about the pyar
mailing list