Cómo indicar en requisitos.txt una fuente directa de github

Resuelto Alfe asked hace 11 años • 11 respuestas

He instalado una biblioteca usando el comando

pip install git+git://github.com/mozilla/elasticutils.git

que lo instala directamente desde un repositorio de Github. Esto funciona bien y quiero tener esa dependencia en mi archivo requirements.txt. He mirado otros tickets como este pero eso no resolvió mi problema. Si pongo algo como

-f git+git://github.com/mozilla/elasticutils.git
elasticutils==0.7.dev

en el requirements.txtarchivo, a pip install -r requirements.txtda como resultado el siguiente resultado:

Downloading/unpacking elasticutils==0.7.dev (from -r requirements.txt (line 20))
  Could not find a version that satisfies the requirement elasticutils==0.7.dev (from -r requirements.txt (line 20)) (from versions: )
No distributions matching the version for elasticutils==0.7.dev (from -r requirements.txt (line 20))

La documentación del archivo de requisitos no menciona enlaces que utilicen el git+gitespecificador de protocolo, por lo que tal vez esto simplemente no sea compatible.

¿Alguien tiene una solución para mi problema?

Alfe avatar May 16 '13 17:05 Alfe
Aceptado

Normalmente su requirements.txtarchivo se vería así:

package-one==1.9.4
package-two==3.7.1
package-three==1.0.1
...

Para especificar un repositorio de Github, no necesita la package-name==convención.

Los siguientes ejemplos se actualizan package-twoutilizando un repositorio de GitHub. El texto siguiente @indica los detalles del paquete.

Especifique el hash de confirmación ( 41b95ecen el contexto de actualizado requirements.txt):

package-one==1.9.4
package-two @ git+https://github.com/owner/repo@41b95ec
package-three==1.0.1

Especifique el nombre de la sucursal ( main):

package-two @ git+https://github.com/owner/repo@main

Especificar etiqueta ( 0.1):

package-two @ git+https://github.com/owner/repo@0.1

Especifique la versión ( 3.7.1):

package-two @ git+https://github.com/owner/repo@releases/tag/v3.7.1

Tenga en cuenta que en ciertas versiones de pip necesitará actualizar la versión del paquete en el archivo setup.py, o pip asumirá que el requisito ya está satisfecho y no instalará la nueva versión. Por ejemplo, si ya 1.2.1instaló y desea bifurcar este paquete con su propia versión, puede usar la técnica anterior en su archivo requirements.txty luego actualizarlo setup.pya 1.2.1.1.

Consulte también la documentación de pip sobre compatibilidad con VCS .

YPCrumble avatar Mar 14 '2016 21:03 YPCrumble

La sintaxis de paquetes "editables" se puede utilizar para requirements.txtimportar paquetes desde una variedad de VCS (git, hg, bzr, svn) :

-e git://github.com/mozilla/elasticutils.git#egg=elasticutils

Además, es posible señalar un compromiso particular:

-e git://github.com/mozilla/elasticutils.git@000b14389171a9f0d7d713466b32bc649b0bed8e#egg=elasticutils
stalk avatar May 16 '2013 10:05 stalk

requirements.txtpermite las siguientes formas de especificar una dependencia de un paquete en un repositorio git a partir de pip 7.0: 1

[-e] git+git://git.myproject.org/SomeProject#egg=SomeProject
[-e] git+https://git.myproject.org/SomeProject#egg=SomeProject
[-e] git+ssh://git.myproject.org/SomeProject#egg=SomeProject
-e [email protected]:SomeProject#egg=SomeProject (deprecated as of Jan 2020)

Para Github eso significa que puedes hacer (observa lo omitido -e):

git+git://github.com/mozilla/elasticutils.git#egg=elasticutils

¿Por qué la respuesta extra?
Me confundí un poco la -ebandera en las otras respuestas, así que aquí está mi aclaración:

La bandera -eo --editablesignifica que el paquete está instalado <venv path>/src/SomeProjecty, por lo tanto, no en el lugar profundamente enterrado <venv path>/lib/pythonX.X/site-packages/SomeProjecten el que de otro modo se colocaría. 2

Documentación

  • 1 https://pip.readthedocs.org/en/stable/reference/pip_install/#git
  • 2 https://pip.readthedocs.org/en/stable/reference/pip_install/#vcs-support
qff avatar Dec 29 '2015 20:12 qff