installation de pip depuis la branche git repo

687

Essayer d' pipinstaller une branche spécifique d'un référentiel. Google me dit de

pip install git + https://github.com/user/repo.git@branch

Le nom de la branche est issue/34/oscar-0.6comme je l'ai fait pip install https://github.com/tangentlabs/django-oscar-paypal.git@/issue/34/oscar-0.6mais son retour est un 404.

Comment installer cette branche?

goh
la source

Réponses:

933

Ajoutez le préfixe d'URL git+(voir Support VCS ):

pip install git+https://github.com/tangentlabs/django-oscar-paypal.git@issue/34/oscar-0.6

Et spécifiez le nom de la branche sans le début /.

falsetru
la source
5
est-il impératif de spécifier une branche ou de s'engager par @?
eugene
9
@eugene, No, @et les parties après cela sont facultatifs.
falsetru
3
Hé, maintenant ce n'est pas nécessaire tree, cela génère une erreur.
SalahAdDin
6
Est pour les succursales, par exemple:pip install -U git+https://github.com/danreeves/[email protected]
SalahAdDin
3
Vous pouvez également mettre quelque chose comme ça git+https://github.com/adiralashiva8/[email protected]dans votre requirements.txt, puis installer avec pip install -r requirements.txt. Cela installera Tag v3.1.4 à partir de la branche principale.
Wlad
311

Utiliser pip avec git + pour cloner un référentiel peut être extrêmement lent (tester avec https://github.com/django/django@stable/1.6.x par exemple, cela prendra quelques minutes). La chose la plus rapide que j'ai trouvée, qui fonctionne avec GitHub et BitBucket, est:

pip install https://github.com/user/repository/archive/branch.zip

qui devient pour django master:

pip install https://github.com/django/django/archive/master.zip

pour django stable / 1.7.x:

pip install https://github.com/django/django/archive/stable/1.7.x.zip

Avec BitBucket, il s'agit du même modèle prévisible:

pip install https://bitbucket.org/izi/django-admin-tools/get/default.zip

Ici, la branche principale est généralement nommée par défaut. Cela rendra l'installation de requirements.txt beaucoup plus rapide.

Certaines autres réponses mentionnent les variations requises lors du placement du package à installer dans votre requirements.txt. Notez qu'avec cette syntaxe d'archive, le début -eet la fin ne#egg=blah-blah sont pas requis, et vous pouvez simplement coller l'URL, de sorte que votre requirements.txt ressemble à:

https://github.com/user/repository/archive/branch.zip
Steve K
la source
29
Remarque: à partir de Django 1.9, Django est fourni avec un fichier portant un nom de fichier unicode . L'extracteur de zip utilisé par les étranglements pip à ce sujet. Une solution de contournement facile consiste à remplacer .zippar .tar.gz, car l'extracteur de goudron fonctionne.
spectras
4
Je me demande si pip pourrait passer --depth 0lors du clonage pour le rendre plus efficace (l'historique complet de git n'est pas nécessaire pour installer un instantané pour pip). git-scm.com/docs/git-clone
cs01
6
Cela fonctionne également pour les hachages de validation! pip install https://github.com/django/django/archive/ebaa08b.zip
Fush
4
Merci d'avoir souligné la différence de vitesse. Je ne les ai pas testés et comparés, mais je pense que la différence de vitesse existe, car l'installation à partir d'une branche entraînerait toujours le téléchargement de l'historique complet du référentiel, tandis que l'installation à partir d'un .zip(ou .tar.gz) entraînerait le téléchargement d'un instantané du référentiel.
RayLuo
Est-il possible d'installer des extras en utilisant cette syntaxe? Par exemple, j'essaie d'installer github.com/apache/incubator-airflow @ master (le package PyPI normal est apache-airflow) pour fonctionner avec une version non publiée. Je voudrais convertir l'appel pip install apache-airflow[crypto, slack]pour installer ces extras avec la version archive. J'ai essayé pip install https://github.com/apache/incubator-airflow/archive/master.zip[crypto, slack]mais cela casse l'URL et l'installation.
Taylor Edmiston
67

Instructions d'installation à partir du référentiel privé à l'aide des informations d'identification ssh :

$ pip install git+ssh://git@github.com/myuser/foo.git@my_version
Jaakko
la source
51

Juste pour ajouter un extra, si vous voulez l'installer dans votre fichier pip, il peut être ajouté comme ceci:

-e git+https://github.com/tangentlabs/django-oscar-paypal.git@issue/34/oscar-0.6#egg=django-oscar-paypal

Cependant, il sera sauvegardé comme un œuf.

Hassek
la source
5
Mieux vaut l'utiliser sans le -e. Voir: stackoverflow.com/a/34518202/451710
Eyal Levin
4
Merci pour le commentaire, très intéressant. Je pense que les gens ont tendance à utiliser le -edrapeau pour éviter tout conflit possible avec un package déjà existant. Je suppose que c'est une question de choix
Hassek
4
Et si vous voulez des "extras", ajoutez-les dans le fragment, comme ça:-e git+https://github.com/tangentlabs/django-oscar-paypal.git@issue/34/oscar-0.6#egg=django-oscar-paypal[PDF]
ankostis
Notez que le -ene semble pas réellement être requis.
Taylor Edmiston
Pour une raison quelconque, cela ne fonctionne pas pour moi sans-e
Kurt Bourbaki
4

Vous avez utilisé la procédure d'installation des fichiers d'oeuf. Ce soutien de la procédure sur l' installation git, git+http, git+https, git+ssh, git+gitet git+file. Certains d'entre eux sont mentionnés.

Il est bon que vous puissiez utiliser des branches, des balises ou des hachages pour installer.

@Steve_K a noté qu'il peut être lent à installer avec "git +" et a proposé l'installation via un fichier zip:

pip install https://github.com/user/repository/archive/branch.zip

Alternativement, je suggère que vous puissiez installer en utilisant le .whlfichier s'il existe.

pip install https://github.com/user/repository/archive/branch.whl

C'est un format assez nouveau, plus récent que les fichiers d'oeufs. Il nécessite des packages wheel et setuptools> = 0.8. Vous pouvez en trouver plus ici .

prosti
la source
1
La question n'est pas spécifiée à github. La notion d'archive / branch.zip est spécifique à github uniquement.
Jorge Leitao
0

Cela a fonctionné comme un charme:

pip3 install git+https://github.com/deepak1725/fabric8-analytics-worker.git@develop

Où :

développer: Branche

fabric8-analytics-worker.git: Repo

deepak1725: utilisateur

Deepak Sharma
la source