Installer un commit git spécifique avec pip

Réponses:

281

Vous pouvez spécifier le hachage de validation, le nom de la branche, la balise.

Pour le nom de la branche et la balise, vous pouvez également installer une distribution compressée. Ceci est plus rapide et plus efficace, car il ne nécessite pas de clonage de l'ensemble du référentiel. GitHub crée ces bundles automatiquement.

hacher:

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

Nom de la filiale

Avec git

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

ou à partir du bundle source

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

marque

avec git

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

ou à partir du bundle source

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

Ce n'est pas une fonctionnalité bien documentée, mais vous pouvez trouver plus d'informations sur https://pip.pypa.io/en/latest/reference/pip_install.html#git

Hugo Tavares
la source
24
Il ajoutera ce message amusant:Could not find a tag or branch '2927346f4c513a217ac8ad076e494dd1adbf70e1', assuming commit.
vlad-ardelean
10
@ vlad-ardelean une idée sur la façon de dire à pip C'EST un commit? Ceci est généré sur mon script de déploiement et je ne veux pas supprimer tous les stderr.
Leonardo Arroyo
Si vous ne spécifiez rien, quel est le comportement?
Scott Stafford
@ScottStafford Vous ne devriez pas avoir de branche / balise qui s'appelle comme un message de validation. Ce serait ... étrange.
Martin Thoma
En outre , je voudrais mentionner une version HTTPS de git+commande: pip install git+https://github.com/gpoore/codebraid@011464539bfb09b8611c8aef0d543532cea958bf. Cela peut être important pour les personnes derrière des proxys http d'entreprise.
grwlf
19

Un commentaire supplémentaire à la réponse de @ hugo-tavares:

S'il s'agit d'un référentiel GitHub privé, vous devrez utiliser:

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

Dans ton cas:

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

Il est possible d'installer automatiquement un package python à l'aide du fichier requirements.txt sur votre projet en ajoutant simplement la ligne suivante:

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

et exécutez la ligne de commande:

$ pip install -r requirements.txt

Mannysz
la source
15
Pour moi (pip 9.0.1 dans python3.5 virtualenv) cela n'a pas fonctionné: pip install -r requirements.txtsoulevé 'Impossible de détecter le nom de l'exigence, veuillez en spécifier un avec # egg ='. Mais cela a fonctionné avec le format '-e git + github.com/owner/repository.git#egg=branch_or_commit '
Edouard Berthe
Vous devez utiliser ce format dans le fichier requirements.txt. As-tu fais ça?
mannysz
Je l'ai fait fonctionner mais ce n'est pas clair. Il faut avoir "nom_package -e ..." et pas seulement "-e ..." au début de la ligne.
Udi
1

Si vous souhaitez créer un paquet d'oeufs, vous pouvez toujours utiliser le même appendice @branch_or_commit: pip install git+ssh://[email protected]/myrepo.git@mybranch#egg=myeggscript

Dannid
la source