2009-10-05 20 views
16

Supongamos que forma parte de un equipo que mantiene una gran cantidad de bibliotecas internas de python (huevecillos) y, por cualquier razón, cargarlas en pypi no es una opción. ¿Cómo podría alojar las bibliotecas (eggs) para que easy_install pueda funcionar para los miembros de su equipo?¿Cómo aloja su propio depósito de huevos?

Básicamente sería genial si esto funcionaba ....

(someproj)[email protected]:~$ easy_install myproprietary.lib-dev 
user: uberdev 
password:... 
fetching...... 
Searching for myproprietary.lib-dev 
Reading http://dev.mycompany.corp/myproprietary.lib-dev 
Reading http://dev.mycompany.corp 
Reading http://dev.mycompany.corp/dist 
Best match: myproprietary.lib-dev 
Downloading http://dev.mycompany.corp/dist/myproprietary.lib-dev 

supongo que hay algún tipo de servidores por ahí que se pueden instalar, pero lo agradecería alguna orientación de los expertos en la materia.

Gracias

+3

¡Obtienes un cartón y lo pones en la nevera! * Rim-shot * –

Respuesta

8

Implementar todos los huevos en un directorio de todos los devs. puede alcanzar (por ejemplo, en un servidor web).

Para instalar los huevos de ese directorio, escriba:

$ easy_install -H None -f http://server/vdir TheEggToInstall 

o.

$ easy_install -H None -f /path/to/directory TheEggToInstall 

-H None medios no permiten descargar el óvulo desde cualquier host (excepto el nombre de -f).

El directorio puede ser localizado a través de http o puede ser un directorio que monte (NFS, comparticiones de Windows, etc.). Tal vez incluso el FTP funciona?

El easy_install documentation tiene información sobre esto.

+0

¡Muchas gracias! Veo en la página que también puede configurar sus URL preferidas en un archivo de configuración. Y easy_install se encargará de la autenticación HTTP básica, que prácticamente responde la pregunta por completo. –

+0

@codeape, tengo archivos de huevo alojados en mi sitio web privado, por ejemplo. https://test.xxx.com/versions/ cuando hago easy_install -H None -f https://test.xxx.com/version/netforce_account-3.1.0-py3.5.egg, recibo muy resultado no deseado como bysuping test.xx host y (host no permitido, vea http:// bit.ly/1dg9ijs para más detalles). , ¿Qué me estoy perdiendo? –

+0

¿Podría publicar la salida de la consola? – codeape

3

Si su equipo se distribuye - y en términos de discurso - a continuación, un simple repositorio de subversión de la fuente es mejor que algún otro tipo de servidor.

Simplemente crea proyectos y haz que todo el mundo finalice la compra. Cuando las cosas cambien, dígales que se actualicen.

Si su equipo comparte ubicación, y en términos de conversación, una unidad compartida con las bibliotecas "oficiales" también funciona bien. Simplemente móntalo e inclúyelo en tu PYTHONPATH.

Si desea copias localizadas, proporcione la fuente oficial en subversión (o una unidad compartida) con un buen archivo setup.py. Simplemente copian CD en el directorio y ejecutan python setup.py install y todo lo demás sucede para ellos. Es una fracción más simple que easy_install porque setup.py ya es parte de la distribución de Python.

Los huevos son para personas que no hablan.

Los miembros de su equipo generalmente hablan y no necesitan la complejidad adicional de los huevos. El setup.py básico debería ser suficiente.

+0

Has planteado algunos puntos buenos. Estaba pensando que usar el control de versiones como el mecanismo de intercambio funcionaría si hubiera un repositorio, pero si hubiera muchos repos, digamos uno por huevo, tener varias versiones de huevos disponibles para los miembros del equipo puede tener más sentido ya que el repositorio de huevos se convertiría en el lugar central. De manera más general, quería entender la mecánica detrás de cómo easy_install encuentra los huevos, que según las respuestas, parece relativamente sencillo. –

1

Antes que nada: si los paquetes son genéricos deberían estar disponibles públicamente, no cargar los paquetes a PyPI generalmente es una mala idea, ya que instalar un paquete que depende de su paquete significa que su servidor debe estar en funcionamiento , así como PyPI. Para cada servidor involucrado obtienes más puntos únicos de fallas.

Pero si se trata de paquetes privados que ni siquiera deberían aparecer en la lista de PyPI, o paquetes que solo son útiles como parte de un sistema grande, como Plone, es otra cuestión. Luego desea easy___install y buildout, etc. para buscar huevecillos en su servidor. Hacer eso es bastante directo. Simplemente coloque el directorio eggs en un servidor web y apunte a ese directorio con el parámetro -f a easy_install.

Aquí es un ejemplo de dicho repositorio: http://dist.plone.org/release/3.3.1/

+1

Estoy de acuerdo con usted en principio. Sin embargo, algunas empresas se ponen tensa sobre su "propiedad intelectual". También, para mí de todos modos, subir a pypi parece implicar que estoy dispuesto a apoyarlo y tomar solicitudes de errores/características. que puede no ser siempre el caso. O al menos, el momento en que debe ser compartido con el equipo, y el tiempo que necesita para ser compartido con el mundo puede ser diferente. –

2

utilizo ClueReleaseManager

ClueReleaseManager es una implementación del servidor de backend PyPi como proporcionada por http://pypi.python.org. Utiliza SQLAlchemy (en la parte superior de sqlite por defecto) para almacenar todos los metadatos del proyecto y el sistema de archivos para almacenar los archivos del proyecto.

Cuestiones relacionadas