Je viens de commencer à travailler avec setuptools et virtualenv. Mon paquet nécessite le dernier python-gearman disponible uniquement à partir de GitHub. La version python-gearman qui est sur PyPI est ancienne. La source Github est compatible avec setuptools, c’est-à-dire setup.py, etc. Y at-il un moyen de faire en sorte que setuptools télécharge et installe la nouvelle version au lieu de la rechercher sur PyPI et d’installer l’ancienne?
Pour votre information, le nouveau python-gearman est http://github.com/mtai/python-gearman
La clé est de dire à 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 en lui-même ne fonctionnera pas, car easy_install ne peut pas dire simplement en regardant l'URL ce qu'il va obtenir.
En le changeant en http://github.com/mtai/python-gearman/tarball/master#Egg=gearman-2.0.0beta , easy_install sera en mesure d'identifier le nom du paquet et sa version. .
La dernière étape consiste à ajouter l’URL aux liens de dépendance de votre paquet, par exemple:
setup(
...
dependency_links = ['http://github.com/mtai/python-gearman/tarball/master#Egg=gearman-2.0.0beta']
)
Désormais, lors de l’installation de VOTRE package, easy_install découvrira qu’il existe un "gearman 2.0.0beta" disponible au téléchargement à partir de cette URL et le sélectionnera avec bonheur sur celui de PyPI, si vous spécifiez "gearman> = 2.0.0beta". dans vos dépendances ..
(Normalement, ce genre de chose est fait: vous insérez un lien sur la page PyPI de votre lecteur vers la source téléchargeable; dans ce cas, si l'auteur du paquet gearman avait inclus un lien comme celui-ci, vous seriez déjà placé En général, les utilisateurs marquent la version de développement avec 'myproject-dev', puis utilisent une exigence de 'myproject> = somever, == dev', de sorte que s'il n'y a pas de paquet de plus ou moins, easy_install essaiera de consultez ou téléchargez le communiqué.)
Vous devrez spécifier --process-dependency-links
lorsque vous utilisez pip
. Notez que le traitement des liens de dépendance est obsolète et sera supprimé dans une version ultérieure.
Vous pouvez utiliser le pip install protocol+location[@tag][#Egg=Dependency]
format à installer directement depuis la source à l’aide de pip.
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
pip install hg+https://hg.myproject.org/MyProject/
pip install svn+svn://svn.myproject.org/svn/MyProject
pip install bzr+http://bzr.myproject.org/MyProject/trunk
Les protocoles suivants sont supportés: [+git, +svn, +hg, +bzr]
@tag
vous permet de spécifier une version/balise spécifique à extraire.
#Egg=name
vous permet de spécifier le projet en tant que dépendance des autres.
La commande doit toujours être @tag#Egg=name
.
Vous pouvez également installer à partir de référentiels privés en modifiant le protocole en SSH (ssh://
) et l’ajout d’un utilisateur approprié (git@
):
git+ssh://[email protected]/username/my_private_repo
Vous pouvez également installer à partir de référentiels privés avec un nom d'utilisateur/mot de passe.
git+https://<username>:<password>@github.com/<user>/<repo>.git
Github offre la possibilité de créer personnels OAuth qui peuvent être cyclés
git+https://<oauth token>:[email protected]/<user>/<repo>.git
requirements.txt
est utilisé pour spécifier les dépendances du projet:
conditions.txt
package1
package2==1.0.2
package3>=0.0.4
git+https://github.com/username/repo.git
Ceux-ci ne sont pas installés automatiquement avec le paquet et doivent être installés avec la commande pip -r requirements.txt
.
Les fichiers d'exigences peuvent inclure d'autres fichiers d'exigences:
exigences-docs.txt
sphinx
-r requirements-dev.txt
exigences-dev.txt
some-dev-tool
-r requirements.txt
conditions.txt
package1
package2==1.0.2
package3>=0.0.4
git+https://github.com/username/repo.git
Les fichiers de conditions requises peuvent installer des dépendances spécifiées dans setup.py
avec la commande suivante:
-e .
setup.py
peut également installer à partir de référentiels en utilisant la même syntaxe que ci-dessus, mais en utilisant le fichier dependency_links
valeur mentionnée dans cette réponse .
https://pip.pypa.io/en/latest/user_guide.html#installing-packageshttps://pip.pypa.io/en/latest/reference/pip_install. html
Comme je venais de faire la même chose, j’ai trouvé un autre moyen de le faire, comme pip
--process-dependency-links
sont programmés pour être supprimés dans pip
19.0 selon ce commentaire .
pip
18.1 inclut la fonctionnalité suivante
Autoriser l'utilisation des exigences d'URL PEP 508 en tant que dépendances.
De la description du PEP 508, la syntaxe de ces dépendances d'URL ressemble à ceci:
Une recherche minimale basée sur une URL:
pip @ https://github.com/pypa/pip/archive/1.3.1.Zip#sha1=da9234ee9982d4bbbbcc34346a6de940a148ea686
Donc dans votre setup.py
on dirait
setup(
...
install_requires = [
...
'python-gearman @ https://github.com/mtai/python-gearman/archive/master.Zip'
...
]
)
Notez que le lien est un fichier d’archive et pourrait également être une version spécifique ou une branche 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 paquet à partir de son répertoire.
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 Source du téléchargement de cette page, comme:
easy_install http://github.com/mtai/python-gearman/tarball/master