2008-10-05 20 views
12

Cuando se trata de organizar módulos de python, mi sistema Mac OS X es un desastre. Tengo paquetes por todas partes en mi disco duro y ningún sistema en particular para organizarlos.¿Cómo se organizan los módulos de Python?

¿Cómo se mantiene todo manejable?

Respuesta

12

Mi consejo:

+0

En realidad, voy un paso más allá: mi sitio-paquetes omite herramientas de configuración, ya que (a) no lo necesito allí, (b) virtualenv incluye una copia incluida con él que puede usar al crear cada entorno, y (c) algunas versiones de virtualenv me causan problemas si están disponibles en todo el sistema. –

5

Además de PEP8 y easy_install, debe verificar virtualenv. Virtualenv le permite tener múltiples árboles de biblioteca de python diferentes. En el trabajo, utilizamos virtualenv con un entorno de arranque para configurar rápidamente un entorno de desarrollo/producción en el que todos estamos sincronizados con las versiones de la biblioteca w.r.t. Generalmente coordinamos las actualizaciones de la biblioteca.

+1

Eso suena realmente interesante, ¿podría explicar esto un poco más (y tal vez publicar un script de arranque virtualenv como ejemplo)? –

2

guardo toda la fuente de mis paquetes dentro de ~/Paquetes /, y luego hago una instalación estándar con "configuración python2.5 .py install "en ellos. Esto se lanza en (para mí) /Library/Frameworks/Python/Versions/current/lib/python2.5/site-packages/. Para el desarrollo de mi propio software, tengo alias configurados para cambiar entre trunk/branches/1.0, etc., pre-prending en PYTHONPATH. (Tengo que ejecutar 'setup.py build_ext --inplace' en cada uno de estos directorios antes de que se importen correctamente.)

Vale la pena señalar que Python2.6 tiene un per-user site-packages directory, que puede ser más conveniente.

1

Mi consejo es tratar de poner todo en su directorio (s) de paquetes de sitio a menos que tenga una buena razón para no hacerlo. Y trato de evitar easy_install porque me parece que tiende a mezclar mi sys.path con ubicaciones de huevo, pero así soy yo. Algunas personas lo encuentran útil.

Si tiene muchos programas que usan bibliotecas diferentes que pueden entrar en conflicto entre sí, es posible que también desee comprobar virtualenv.

5

Hay varias familias de componentes de Python.

  1. Lo que viene con Python. Esto se cuida solo.

  2. Lo que tienes con easy_install. Esto, también, se cuida a sí mismo.

  3. Los paquetes que tenía que conseguir de otra manera, ya sea como TARballs o SVN checkouts. Crea una carpeta Components. Pon las descargas o los SVN allí primero. Cada vez. Haz las instalaciones desde allí.

  4. Los paquetes que ha escrito que son reutilizables. Tengo una carpeta Projects con cada proyecto en esa carpeta. Si el proyecto es altamente reutilizable, tiene un setup.py y realmente ejecuto la instalación como si lo hubiera descargado. No tengo muchos de estos, pero algunos. Algunos de ellos podrían convertirse en proyectos de código abierto.

  5. Las aplicaciones finales que escribe. Tengo una carpeta en Projects con cada una de estas aplicaciones de nivel superior. Estas suelen ser cosas grandes y divagantes (como los sitios de Django) y no tienen setup.py. ¿Por qué? A menudo son bastante complejas, con solo unas pocas instalaciones de servidores para administrar, y cada una de esas instalaciones de servidores es única. Estos generalmente se basan en PYTHONPATH para identificar sus partes.

Observe el tema común. O son componentes que descargaste o son proyectos en los que estás trabajando.

Además, mantengo esto separado (hasta cierto punto) del cliente. Tengo un directorio maestro de carpetas de clientes, cada uno de los cuales tiene proyectos y cada proyecto tiene ventas y entregas. No todos los proyectos tienen ventas y entregas.

1

acaba de ejecutar a través de este sitio desde otra pregunta StackOverflow: http://infinitemonkeycorps.net/docs/pph/ Esto se refiere a algo más que la colocación del módulo, pero una vez que lo coloca escribir cómo se puede manejar con facilidad la documentación, pruebas y distribución.

Cuestiones relacionadas