2010-01-18 15 views

Respuesta

12

que tiene que hacer dos cosas. En primer lugar, requiere la versión exacta que desea, por ejemplo:

install_requires = "useful.package==1.9dev-r1234" 

y luego incluir un ajuste dependency_links especificar dónde encontrarlo:

dependency_links = ["svn://example.org/useful.package/[email protected]#egg=useful.package-1.9dev-r1234"] 

Tenga en cuenta que la parte de versión #egg= de la URL dependency_links debe exactamente coincide con lo que ha especificado en install_requires; esto es lo que une las dos piezas.

Lo que sucede es que setuptools ve la etiqueta #egg en el enlace y guarda la URL como una URL de descarga disponible para esa versión precisa del paquete. Luego, cuando intente resolver ese requisito más adelante, debería descargar esa URL SVN precisa.

(Nótese, sin embargo, que para que esto realmente trabajo, la revisión SVN objetivo tiene que construir realmente un huevo con ese nombre y la versión. De lo contrario, su dependencia fallará en tiempo de ejecución! Por lo tanto, esto realmente sólo funciona si el paquete del que depende utiliza etiquetas de revisión SVN en sus números de versión de compilación predeterminados).

+1

Sí, no funciona/realmente/trabajo en el caso común ... Solo uso pip ahora. – joeforker

+0

¿no debería "find_links" en realidad ser "dependency_links"? –

+0

Gracias, Gabriel. Lo he arreglado –

2

Si realmente necesita una versión poco clara de otro paquete, y no hay forma de arreglárselas con otras versiones, es posible que desee simplemente distribuir esa versión del paquete con la suya propia. Si es necesario, colóquelo en su propio espacio de nombres para asegurarse de que su versión sea la que se usa.

1

Puede liberar paquetes de versiones específicas, pero debe distribuirlos juntos. No hay forma de descargarlos automáticamente con Python estándar.

Sin embargo, puede usar Buildout y crear una buildout.cfg que permita replicar el entorno. Puede verificar e instalar revisiones específicas si usa extensiones como mr.developer.

http://pypi.python.org/pypi/zc.buildout http://pypi.python.org/pypi/mr.developer

2

no he descubierto cómo hacer referencia a esto desde setup.py pero pip puede comprobar a cabo revisiones específicas de paquetes de Python con un archivo de requisitos sencilla. Con un archivo de requisitos llamado requires.txt, pip install -r requires.txt instalará todos los paquetes enumerados en ese archivo (y sus dependencias).

Aquí está parte de mi archivo de requisitos. Las líneas que comienzan con -e revisan las revisiones específicas de los paquetes del control de versiones (git, svn o mercurial), incluido mi proyecto, y las instalan de forma editable. pip freeze enumera todos los paquetes instalados en este formato.

requires.txt:

-e hg+file:///home/me/my-private-project#egg=myproject 
-e hg+http://bitbucket.org/ianb/[email protected]#egg=WebOb 
-e svn+http://svn.sqlalchemy.org/sqlalchemy/[email protected]#egg=SQLAlchemy 
-e svn+http://svn.zope.org/repos/main/z3c.saconfig/[email protected]#egg=z3c.saconfig 
## The following requirements were added by pip --freeze: 
APScheduler==1.01 
simplejson==2.0.9 
... (many more) 
+0

¿Realmente desea tener forma editable de sus dependencias? –

+0

A veces lo hago. – joeforker

Cuestiones relacionadas