136 votes

Comment puis-je faire setuptools installer un paquet qui ' s pas sur PyPI ?

J'ai juste commencé à travailler avec setuptools et virtualenv. Mon colis nécessite la dernière python-gearman qui est disponible uniquement à partir de GitHub. Python-gearman version sur PyPI est une ancienne. Le Github source est setuptools-compatible, c'est à dire a setup.py, etc. Est-il un moyen de faire setuptools de télécharger et d'installer la nouvelle version à la place de la recherche sur PyPI et l'installation de l'ancien?

Pour info, la nouvelle python-gearman est http://github.com/mtai/python-gearman

153voto

pjeby Points 3228

Donc, la clé ici est de dire easy_install où la version git peut être téléchargé à partir. Dans ce cas, il est http://github.com/mtai/python-gearman/tarball/master. Cependant, ce lien par lui-même ne fonctionne pas, parce que easy_install ne pouvez pas dire tout simplement en regardant l'URL de ce qu'il va recevoir.

Donc, en modifiant à http://github.com/mtai/python-gearman/tarball/master#egg=gearman-2.0.0beta au lieu de cela, easy_install sera en mesure de dire ce paquet et sa version.

Maintenant, la dernière étape pour le faire fonctionner. Depuis ce lien n'est pas sur PyPI, vous devez l'ajouter à votre paquet dependency_links, par exemple:

setup(
   ...
   dependency_links = ['http://github.com/mtai/python-gearman/tarball/master#egg=gearman-2.0.0beta']
)

Maintenant, lorsque VOTRE colis est en cours d'installation, easy_install découvrirez qu'il y a un "gearman 2.0.0 beta" disponible pour téléchargement à partir de cette URL, et heureux de le chercher sur les un sur PyPI, si vous spécifiez "gearman>=2.0.0 beta" dans vos dépendances..

(Normalement, la façon dont ce genre de chose est fait d'inclure un lien sur PyPI page à la source téléchargeable; dans ce cas, si l'auteur de la gearman paquet a inclus un lien comme ci-dessus, vous seriez déjà. Généralement, les gens marquent le développement de la version avec "myproject-dev" et puis, les gens utilisent une exigence d '"monprojet>=somever,==dev', de sorte que si il n'y a pas un paquet de somever ou plus, easy_install va essayer de consulter ou de télécharger la version.)

63voto

Adam Griffiths Points 184

Vous pouvez utiliser l' pip install protocol+location[@tag][#egg=Dependency] format pour installer directement à partir de la source à l'aide de pip.

Git:

pip install git+https://github.com/username/repo.git
pip install git+https://github.com/username/repo.git@MyTag
pip install git+https://github.com/username/repo.git@MyTag#egg=ProjectName

Mercurial:

pip install 

SVN:

pip install svn+svn://svn.myproject.org/svn/MyProject

Bzr:

pip install bzr+http://bzr.myproject.org/MyProject/trunk

Les protocoles suivants sont pris en charge: [+git, +svn, +hg, +bzr]

@tag vous permet de spécifier une version spécifique/tag pour vérifier.

#egg=name vous permet de spécifier ce que le projet est comme une dépendance pour les autres.

Références:

https://pip.pypa.io/en/latest/user_guide.html#installing-packages https://pip.pypa.io/en/latest/reference/pip_install.html

6voto

Ned Deily Points 40248

Vanille `` does pas soutien en téléchargement directement depuis un dépôt git, mais vous pouvez utiliser un des liens de cette page, Télécharger Source comme :

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X