Instalar git commit específico con pip

Respuestas:

281

Puede especificar commit hash, nombre de rama, etiqueta.

Para el nombre de la sucursal y la etiqueta, también puede instalar una distribución comprimida. Esto es más rápido y más eficiente, ya que no requiere clonar todo el repositorio. GitHub crea esos paquetes automáticamente.

picadillo:

$ pip install git+git://github.com/aladagemre/django-notification.git@2927346f4c513a217ac8ad076e494dd1adbf70e1

nombre de sucursal

Con git

$ pip install git+git://github.com/aladagemre/django-notification.git@cool-feature-branch

o del paquete fuente

$ pip install https://github.com/aladagemre/django-notification/archive/cool-feature-branch.tar.gz

etiqueta

con git

$ pip install git+git://github.com/aladagemre/[email protected]

o del paquete fuente

$ pip install https://github.com/aladagemre/django-notification/archive/v2.1.0.tar.gz

No es una característica bien documentada, pero puede encontrar más información en https://pip.pypa.io/en/latest/reference/pip_install.html#git

Hugo Tavares
fuente
24
Agregará este divertido mensaje:Could not find a tag or branch '2927346f4c513a217ac8ad076e494dd1adbf70e1', assuming commit.
vlad-ardelean
10
@ vlad-ardelean alguna idea sobre cómo decir pip ¿ES un compromiso? Esto se está superando en mi script de implementación y no quiero suprimir todo stderr.
Leonardo Arroyo
Si no especificas nada, ¿cuál es el comportamiento?
Scott Stafford
@ScottStafford No debe tener una rama / etiqueta que se llame como un mensaje de confirmación. Eso sería ... extraño.
Martin Thoma
Además, mencionaría una versión de git+comando HTTPS :pip install git+https://github.com/gpoore/codebraid@011464539bfb09b8611c8aef0d543532cea958bf . Puede ser importante para las personas detrás de los proxies http corporativos.
grwlf
19

Un comentario adicional a la respuesta de @hugo-tavares:

Si es un repositorio privado de GitHub, deberá usar:

pip install git+ssh://[email protected]/....

En tu caso:

pip install git+ssh://[email protected]/aladagemre/django-notification.git@2927346f4c513a217ac8ad076e494dd1adbf70e1
PGuiv
fuente
12

Es posible instalar automáticamente un paquete de Python usando el archivo require.txt en su proyecto simplemente agregando la siguiente línea:

-e git+https://github.com/owner/repository.git@branch_or_commit

y ejecuta la línea de comando:

$ pip install -r requirements.txt

mannysz
fuente
15
Para mí (pip 9.0.1 en python3.5 virtualenv) no funcionó: se pip install -r requirements.txtplanteó 'No se pudo detectar el nombre del requisito, especifique uno con # egg ='. Pero funcionó con el formato '-e git + github.com/owner/repository.git#egg=branch_or_commit '
Edouard Berthe
Debe usar este formato dentro del archivo require.txt. ¿Hiciste eso?
mannysz
Lo tengo funcionando pero esto no está claro. Necesita tener "nombre_paquete -e ..." y no solo "-e ..." al comienzo de la línea.
Udi
1

Si desea crear un paquete de huevo, aún puede usar el mismo apéndice @branch_or_commit: pip install git+ssh://[email protected]/myrepo.git@mybranch#egg=myeggscript

Dannid
fuente