[pyar] Modulos y esqueleto de una aplicacion.

fisa fisadev en gmail.com
Lun Abr 30 23:57:47 ART 2012


On Apr 30, 2012 5:37 PM, "Lucas Liendo" <mindmaster en gmail.com> wrote:
>
> Buenas ! Queria compartir algunas dudas acerca de como se debe organizar
una aplicacion. Tengo la siguiente estructura :
>
>
> ./testProject/
> ./testProject/tests
> ./testProject/tests/__init__.py
> ./testProject/src
> ./testProject/src/__init__.py
> ./testProject/src/moduleA
> ./testProject/src/moduleA/__init__.py
> ./testProject/src/moduleA/moduleA.py
> ./testProject/src/moduleB
> ./testProject/src/moduleB/__init__.py
> ./testProject/src/moduleB/moduleB.py
>
>
> ¿Es correcto o lo mas pythonero organizar un proyecto de esta manera?.
¿Es necesario el __init__.py en el directorio src?
>
> Con respecto a imports, yo tengo en este proyecto de prueba lo siguiente :
>
> # Archivo ./testProject/src/moduleB/moduleB.py
>
> class moduleBTest(object) :
>     def __init__(self) :
>         pass
>
>     def test_method(self) :
>         print "This is moduleB"
>
>
>
> # Archivo ./testProject/src/moduleA/moduleA.py
> import ????.moduleBTest
> from ???? import moduleBTest
>
> class moduleATest(object) :
>     def __init__(self) :
>         pass
>
>     def print(self) :
>         moduleBTest().test_method()
>
>
> ¿Como deberia ser el import de este ultimo archivo para poder referencia
a la clase moduleBTest?
>
> --
>
> Saludos,
> Lucas.
>    _
> __("<
> \__/
>  ^^
>
>

Te recomiendo este artículo para el tema de la estructura del repo:

http://www.kennethreitz.com/repository-structure-and-python.html

Respecto al tema de los imports, lo más ordenado sería setear el PYTHONPATH
a la raiz de tu proyecto (directorio anterior a src), o que tu proyecto
esté en algún lugar visible para importar, así después podés importar con
el nombre completo, así:

from src.moduleB.moduleB import moduleBTest

Pero fijate que con tu estructura eso no quedó "lindo", por dos cosas:
* que tu código esté dentro de una carpeta de nombre "src", poque entonces
tu paquete se llama "src".
* que tengas un moduleB.py dentro de una carpeta moduleB, porque entonces
tenes que repetir eso en el import.

Así que siguiendo lo del artículo que te pasé, tu repo podría ser:

...(demas cosas)...
./testProject/nombre/
(nombre representativo, no uso "test" para no confundir)
./testProject/nombre/__init__.py
./testProject/nombre/moduleA.py
./testProject/nombre/moduleB.py

Así, con el pythonpath apuntando a testProject, podés hacer:

from nombre.moduleB import moduleBTest

Que es lindo :)

Saludos

--
fisa - Juan Pedro Fisanotti
(desde el cellular)
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20120430/c5a3a794/attachment.html>


More information about the pyar mailing list