Je viens de commencer à travailler avec setuptools et virtualenv. Mon paquet nécessite le dernier python-gearman qui n'est disponible que sur GitHub. La version python-gearman qui est sur PyPI est une ancienne. La source Github est compatible avec setuptools, c'est-à-dire a setup.py, etc. Existe-t-il un moyen de faire télécharger et installer la nouvelle version par setuptools au lieu de la rechercher sur PyPI et d'installer l'ancienne?
Pour info, le nouveau python-gearman est http://github.com/mtai/python-gearman
python
setuptools
distutils
pypi
Andrei
la source
la source
python setup.py install
dans le répertoire source?easy_install
ou l'pip
installer directement depuis Github. Mais il y a aussi une autre solution, avez-vous envisagé d'ajouter le package à PyPI?buildout
? Il a quelques plugins Git prêts à l'emploi.Réponses:
La clé est d'indiquer à easy_install où le package peut être téléchargé. Dans ce cas particulier, il peut être trouvé à l'url http://github.com/mtai/python-gearman/tarball/master . Cependant, ce lien ne fonctionnera pas en lui-même, car easy_install ne peut pas dire simplement en regardant l'URL ce qu'il va obtenir.
En le remplaçant par http://github.com/mtai/python-gearman/tarball/master#egg=gearman-2.0.0beta , easy_install pourra identifier le nom du paquet et sa version.
La dernière étape consiste à ajouter l'URL aux liens de dépendance de votre package, par exemple:
Maintenant, lorsque VOTRE paquet est en cours d'installation, easy_install découvrira qu'il existe un "gearman 2.0.0beta" disponible au téléchargement à partir de cette URL, et le choisira volontiers par-dessus celui sur PyPI, si vous spécifiez "gearman> = 2.0.0beta" dans vos dépendances ..
(Normalement, la façon dont ce genre de chose est fait est d'inclure un lien sur sa page PyPI vers la source téléchargeable; dans ce cas, si l'auteur du paquet gearman avait inclus un lien comme celui ci-dessus, vous seriez déjà défini . En règle générale, les gens marquent la version de développement avec «myproject-dev», puis les gens utilisent une exigence de «myproject> = somever, == dev», de sorte que s'il n'y a pas de paquet de somever ou plus, easy_install essaiera de consultez ou téléchargez la version.)
Vous devrez spécifier
--process-dependency-links
lors de l'utilisationpip
. Notez que le traitement des liens de dépendance est obsolète et sera supprimé dans une prochaine version.la source
beta
suffixe sur une version existante sur PyPI, il installera toujours le package de PyPI au lieu de celui défini dansdependency_links
. Si vous essayez de définir une version supérieure à ce qui existe sur PyPI avec#egg=package-version
, l'outil de configuration se plaindra d'uneCould not find a version that satisfies the requirement
erreur et d'une liste de toutes les versions disponibles sur PyPI. Notez que j'essaie de créer mon package avecsdist
, puis de l'installer avecpip install http://url/to/my/generated/tar
.easy_install http://url/to/my/generated/tar
, tout fonctionne comme prévu ... Une idée pourquoi?--process-dependency-links
a été supprimé à partir dupip
19! Voir: github.com/pypa/pip/issues/6162Vous pouvez utiliser le
pip install protocol+location[@tag][#egg=Dependency]
format pour installer directement à partir de la source à l'aide de pip.Git
Mercuriel
SVN
Bzr
Les protocoles suivants sont pris en charge:
[+git, +svn, +hg, +bzr]
Versions
@tag
vous permet de spécifier une version / balise spécifique à extraire.#egg=name
vous permet de spécifier ce qu'est le projet en tant que dépendance pour les autres.L'ordre doit toujours être
@tag#egg=name
.Dépôts privés
Vous pouvez également installer à partir de référentiels privés en changeant le protocole en SSH (
ssh://
) et en ajoutant un utilisateur approprié (git@
):Vous pouvez également installer à partir de référentiels privés avec un nom d'utilisateur / mot de passe.
Github offre la possibilité de créer des jetons OAuth personnels qui peuvent être cyclés
requirements.txt
requirements.txt
est utilisé pour spécifier les dépendances du projet:requirements.txt
Ceux-ci ne sont pas installés automatiquement avec le package et doivent être installés avec la commande
pip -r requirements.txt
.Y compris les fichiers d'exigences
Les fichiers d'exigences peuvent inclure d'autres fichiers d'exigences:
requirements-docs.txt
requirements-dev.txt
requirements.txt
setup.py
Les fichiers d'exigences peuvent installer les dépendances spécifiées dans
setup.py
avec la commande suivante:setup.py
peut également installer à partir de référentiels en utilisant la même syntaxe que ci-dessus, mais en utilisant ladependency_links
valeur mentionnée dans cette réponse .Références:
https://pip.pypa.io/en/latest/user_guide.html#installing-packages https://pip.pypa.io/en/latest/reference/pip_install.html
la source
extras_require={'all': [repo @ git+https://github.com/username/repo.git]}
Comme je l' ai juste eu à faire la même chose, je l' ai trouvé une autre façon de le faire comme
pip
« s--process-dependency-links
devraient être enlevés àpip
19,0 selon ce commentaire .pip
18.1 comprend la fonctionnalité suivanteD'après la description de PEP 508, la syntaxe de ces dépendances d'URL ressemble à:
Donc dans votre
setup.py
il ressemblerait àRemarquez que le lien est un fichier d'archive et peut également être une version ou une branche spécifique d'un référentiel, comme décrit dans cette réponse . Consultez également cette réponse pour travailler avec d'autres hôtes de référentiel.
À ma connaissance, le moyen le plus simple de mettre à jour la dépendance consiste à utiliser
pip install -I .
lors de l'installation de votre package à partir de son répertoire.la source
pip install
prend en charge, tels que les URL git,#subdirectory=...
etc.? Ou ont-ils proposé une toute nouvelle syntaxe avec différentes fonctionnalités exposées d'une manière différente et incompatible?distutils.core.setup
etpip 19.1.1
requirements.txt
, cependant, n'est pas compatible avecpip install -r requirments.txt
requirments.txt
-vous de quoi parlez -vous?Vanilla
setuptools
ne prend pas en charge le téléchargement directement à partir d'un référentiel git, mais vous pouvez utiliser l'un des liens Download Source de cette page, comme:la source
pip
oubuildout
qui ont la gestion des exigences plus sophistiquées. Voir, par exemple: pip.openplans.org/#requirements-files