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?

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 /.


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/wagtailgmaps@3.0.0
SalahAdDin

3
Vous pouvez également mettre quelque chose comme ça git+https://github.com/adiralashiva8/robotframework-metrics@v3.1.4dans 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

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

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.


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 .


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

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.