¿Cómo organizas los módulos de Python? [cerrado]
Pregunta
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 no tengo un sistema particular para organizarlos.
¿Cómo mantiene todo manejable?
Solución
Mi consejo:
- Lea Instalación de módulos de Python .
- Leer Distribución de módulos de Python .
- Comience a usar easy_install desde setuptools . Lea la documentación de setuptools.
- Utilice siempre virtualenv . El directorio de mi sitio-paquetes contiene setuptools y virtualenv solamente .
- Vea el nuevo proyecto de Ian Bicking pyinstall .
- Sigue todo Ian Bicking está trabajando. Siempre es bondad.
- Al crear sus propios paquetes, use distutils / setuptools. Considere usar
paster create
(consulte http://pythonpaste.org ) para crear su directorio inicial diseño.
Otros consejos
Además de PEP8 y easy_install, debe consultar virtualenv. Virtualenv le permite tener múltiples árboles de bibliotecas 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, etc. generalmente coordinamos las actualizaciones de la biblioteca.
Hay varias familias de componentes Python.
-
Lo que viene con Python. Esto se hace cargo de sí mismo.
-
Lo que tienes con easy_install. Esto también se cuida solo.
-
Los paquetes que tenía que obtener de otra manera, ya sea como TARballs o SVN. Cree una carpeta
Componentes
. Ponga las descargas o los SVN's allí primero. Cada vez. Se instala desde allí. -
Los paquetes que escribió que son reutilizables. Tengo una carpeta
Projects
con cada proyecto en esa carpeta. Si el proyecto es altamente reutilizable, tiene unsetup.py
y realmente ejecuto la instalación como si lo hubiera descargado. No tengo muchos de estos, pero algunos. Algunos de ellos pueden convertirse en proyectos de código abierto. -
Las aplicaciones finales que escribes. Tengo una carpeta en
Proyectos
con cada una de estas aplicaciones de nivel superior. Por lo general, son cosas grandes y divagantes (como los sitios de Django) y no tienensetup.py
. ¿Por qué? A menudo son bastante complejos con solo unas pocas instalaciones de servidor para administrar, y cada una de esas instalaciones de servidor es única. Estos generalmente se basan enPYTHONPATH
para identificar sus partes.
Observe el tema común. O son componentes que descargaste o proyectos en los que estás trabajando.
También, mantengo esto separado (hasta cierto punto) del cliente. Tengo un directorio maestro de carpetas de Cliente, cada una de las cuales tiene Proyectos y cada proyecto tiene Ventas y Entrega. No todos los proyectos tienen ventas y entregas.
Tal vez PEP8 y easy_install puede ayudarlo?
Mantengo toda la fuente de mis paquetes dentro de ~ / Packages /, y luego hago una instalación estándar con " python2.5 setup.py install " en ellos. Esto se lanza a (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 / branch / 1.0, etc., pretendiendo 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 una directorio de paquetes de sitio por usuario , que puede ser más conveniente.
Los " Módulos " La página de documentación de Python es una guía útil para organizar el código, específicamente los " paquetes " secciones
Mi consejo es tratar de poner todo en su (s) directorio (s) de paquetes de sitio a menos que tenga una buena razón para no hacerlo. Y trato de evitar easy_install porque encuentro que tiende a arruinar mi sys.path con ubicaciones de huevo, pero eso soy solo yo. Algunas personas lo encuentran útil.
Si tiene muchos programas que usan bibliotecas diferentes que pueden entrar en conflicto entre sí, también puede consultar virtualenv .
Acabo de encontrar en este sitio otra pregunta de StackOverflow: http://infinitemonkeycorps.net/docs/pph/ Esto abarca más que solo la colocación de módulos, pero una vez que lo coloque, escriba cómo puede manejar fácilmente la documentación, las pruebas y la distribución.