Cómo indicar en requisitos.txt una fuente directa de github
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.txt
archivo, a pip install -r requirements.txt
da 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+git
especificador de protocolo, por lo que tal vez esto simplemente no sea compatible.
¿Alguien tiene una solución para mi problema?
Normalmente su requirements.txt
archivo 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-two
utilizando un repositorio de GitHub. El texto siguiente @
indica los detalles del paquete.
Especifique el hash de confirmación ( 41b95ec
en 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.1
instaló y desea bifurcar este paquete con su propia versión, puede usar la técnica anterior en su archivo requirements.txt
y luego actualizarlo setup.py
a 1.2.1.1
.
Consulte también la documentación de pip sobre compatibilidad con VCS .
La sintaxis de paquetes "editables" se puede utilizar para requirements.txt
importar 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
requirements.txt
permite 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 -e
bandera en las otras respuestas, así que aquí está mi aclaración:
La bandera -e
o --editable
significa que el paquete está instalado <venv path>/src/SomeProject
y, por lo tanto, no en el lugar profundamente enterrado <venv path>/lib/pythonX.X/site-packages/SomeProject
en 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