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.
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
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.
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
.
git+git://github.com/celery/Django-celery.git
-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.
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:
.git
, ce qui en fait un référentiel Git standard. Vous pouvez pousser à votre fourche tout de suite.