2012-08-12 4 views
12

Quiero crear una "biblioteca" de módulos de Python que voy a ser capaz de acceder a varias carpetas de proyectos separados.manera de crear un pitón "biblioteca"

Por ejemplo, quiero que los scripts de Python en/proj1// Proj2 y/tener acceso a// lib.

/lib/help.py 
/lib/more_help.py 

/proj1/script.py 
/proj1/script2.py 

/proj2/this_script.py 
/proj2/another_script.py 

No quiero un solo directorio con todos los scripts de Python, ya que esto parece bastante desorganizado. Definitivamente tampoco quiero copiar el mismo script/lib/en cada uno de los diferentes proyectos.

¿Cuál es la forma ideal para manejar esto en Python? ¿Es appending to Python's path? ¿O es esto más un hack? Esto parece tener la desventaja de hacer que los archivos sean menos portátiles. ¿O es this question/answer sobre el uso de rutas relativas? ¿O algo mas?

debo añadir que estoy interesado en Python 2.x en lugar de 3.x, si importa.

Respuesta

8

Encienda lib/ en un package, a continuación, ponerlo en uno de los directorios en sys.path (o añadir una nueva entrada). Luego puede importar, p. lib.help en sus proyectos.

3

seguir la carretera estándar que todo el mundo da: hacer que el código Python un paquete adecuado con un setup.py adecuada. Los beneficios son: easy_install'able, fácil de distribuir, generación sencilla de script de línea de comandos (a través del punto de entrada console_scripts), etc.

2

Creo que la mejor herramienta que puede usar para mantener bajo control el entorno de su proyecto es virtualenv. Usted crea un nuevo entorno virtual e instala allí sus paquetes, luego ejecuta su proyecto utilizando el ejecutable de python que virtualenv le brinda.

Probablemente deberías utilizar distutils en tu biblioteca, de esta manera instalarlo con virtualenv es realmente fácil, porque virtualenv instala setuptools o distribuye en el entorno virtual, lo que te permite instalar en el entorno virtual paquetes de pypi o de tu máquina local.

También existe la posibilidad de crear un script de arranque a medida que instala automáticamente algunas bibliotecas después de la creación de entornos virtuales.

+0

yo no había oído hablar de esta herramienta, pero sin duda mirar hacia arriba. ¡Gracias por la recomendación! –

Cuestiones relacionadas