web-dev-qa-db-fra.com

Configuration de sorte que pip install puisse fonctionner à partir de github

Nous aimerions utiliser pip avec github pour installer des packages privés sur nos serveurs de production. Cette question concerne ce qui doit être dans le dépôt github pour que l’installation réussisse.

En supposant que la ligne de commande suivante (qui authentifie très bien et tente d’installer):

pip install git+ssh://[email protected]/BlahCo/search/tree/prod_release_branch/ProductName

Qu'est-ce qui doit résider dans le ProductName? S'agit-il du contenu de ce qui serait normalement dans le fichier tar après avoir exécuté setup.py avec l'option sdist, ou s'agit-il du fichier tar.gz, ou de quelque chose d'autre?

Je demande ici parce que j'ai essayé plusieurs variantes et que je ne peux pas le faire fonctionner. Toute aide appréciée.

203
ccgillett

Vous avez besoin du package python complet, avec un fichier setup.py.

Un paquet nommé foo serait:

foo # the installable package
├── foo
│   ├── __init__.py
│   └── bar.py
└── setup.py

Et installez github comme:

$ pip install git+https://github.com/myuser/foo.git@v123
or
$ pip install git+https://github.com/myuser/foo.git@newbranch

Plus d'infos sur https://pip.pypa.io/fr/stable/reference/pip_install/#vcs-support

268
Hugo Tavares

J'ai eu un problème similaire lorsque j'ai dû installer à partir de github repo, mais je ne voulais pas installer git, etc.

Le moyen simple de le faire consiste à utiliser l'archive Zip du paquet. Ajoutez /zipball/master à l'URL du référentiel:

    $ pip install https://github.com/hmarr/Django-debug-toolbar-mongo/zipball/master
Downloading/unpacking https://github.com/hmarr/Django-debug-toolbar-mongo/zipball/master
  Downloading master
  Running setup.py Egg_info for package from https://github.com/hmarr/Django-debug-toolbar-mongo/zipball/master
Installing collected packages: Django-debug-toolbar-mongo
  Running setup.py install for Django-debug-toolbar-mongo
Successfully installed Django-debug-toolbar-mongo
Cleaning up...

De cette façon, vous ferez fonctionner pip avec les référentiels sources github.

103
Dmitry

Si vous voulez utiliser le fichier requirements.txt, vous aurez besoin de git et de quelque chose comme l'entrée ci-dessous pour extraire anonymement la branche principale de votre requirements.txt.

Pour une installation régulière:

git+git://github.com/celery/Django-celery.git

Pour " éditable ", installez:

-e git://github.com/celery/Django-celery.git#Egg=Django-celery

Le mode éditable télécharge le code source du projet dans ./src du répertoire en cours. Cela permet à pip freeze de sortir le bon emplacement github du paquet.

25
wieczorek1990

Clonez le référentiel cible de la même manière que vous clonez n'importe quel autre projet:

git clone [email protected]:myuser/foo.git

Puis installez-le en mode développement:

cd foo
pip install -e .

Vous pouvez changer ce que vous voulez et chaque code utilisant le package foo utilisera du code modifié.

Il y a 2 avantages de cette solution:

  1. Vous pouvez installer le paquet dans votre répertoire de projets personnels.
  2. Le paquet inclut le répertoire .git, ce qui en fait un référentiel Git standard. Vous pouvez pousser à votre fourche tout de suite.
10
avalanchy