pip installer des liens de dépendance
Je suis en utilisant python version 2.7
et pip version is 1.5.6
.
Je veux installer des bibliothèques supplémentaires à partir de l'url comme un repo git sur setup.py est en cours d'installation.
Je met les extras de install_requires
paramètre dans setup.py
. Cela signifie, ma bibliothèque a besoin de bibliothèques supplémentaires et ils doivent également être installés.
...
install_requires=[
"Django",
....
],
...
Mais les urls comme git repos ne sont pas valides chaîne dans install_requires
dans setup.py
. Supposons que, je veux installer une bibliothèque à partir de github. J'ai cherché sur la question et j'ai trouvé quelque chose qui je peux mettre des librairies telles que dependency_links
dans setup.py
. Mais cela ne fonctionne toujours pas. Voici mes liens de dépendance définition;
dependency_links=[
"https://github.com/.../tarball/master/#egg=1.0.0",
"https://github.com/.../tarball/master#egg=0.9.3",
],
Les liens sont valides. Je peux les télécharger à partir d'un navigateur internet avec ces url. Ces bibliothèques ne sont pas encore installé avec ma configuration. J'ai aussi essayé --process-dependency-links
paramètre pour forcer pip. Mais le résultat est le même. Je ne prends aucune erreur lors de bris.
Après l'installation, je ne vois pas de bibliothèque dans pip freeze
résultat dans dependency_links
.
Comment puis-je faire pour être téléchargé avec mon setup.py
installation?
Édité:
Voici ma setup.py
from setuptools import setup
try:
long_description = open('README.md').read()
except IOError:
long_description = ''
setup(
name='esef-sso',
version='1.0.0.0',
description='',
url='https://github.com/egemsoft/esef-sso.git',
keywords=["django", "egemsoft", "sso", "esefsso"],
install_requires=[
"Django",
"webservices",
"requests",
"esef-auth==1.0.0.0",
"django-simple-sso==0.9.3"
],
dependency_links=[
"https://github.com/egemsoft/esef-auth/tarball/master/#egg=1.0.0.0",
"https://github.com/egemsoft/django-simple-sso/tarball/master#egg=0.9.3",
],
packages=[
'esef_sso_client',
'esef_sso_client.models',
'esef_sso_server',
'esef_sso_server.models',
],
include_package_data=True,
zip_safe=False,
platforms=['any'],
)
Édité 2:
Voici pip journal;
Downloading/unpacking esef-auth==1.0.0.0 (from esef-sso==1.0.0.0)
Getting page https://pypi.python.org/simple/esef-auth/
Could not fetch URL https://pypi.python.org/simple/esef-auth/: 404 Client Error: Not Found
Will skip URL https://pypi.python.org/simple/esef-auth/ when looking for download links for esef-auth==1.0.0.0 (from esef-sso==1.0.0.0)
Getting page https://pypi.python.org/simple/
URLs to search for versions for esef-auth==1.0.0.0 (from esef-sso==1.0.0.0):
* https://pypi.python.org/simple/esef-auth/1.0.0.0
* https://pypi.python.org/simple/esef-auth/
Getting page https://pypi.python.org/simple/esef-auth/1.0.0.0
Could not fetch URL https://pypi.python.org/simple/esef-auth/1.0.0.0: 404 Client Error: Not Found
Will skip URL https://pypi.python.org/simple/esef-auth/1.0.0.0 when looking for download links for esef-auth==1.0.0.0 (from esef-sso==1.0.0.0)
Getting page https://pypi.python.org/simple/esef-auth/
Could not fetch URL https://pypi.python.org/simple/esef-auth/: 404 Client Error: Not Found
Will skip URL https://pypi.python.org/simple/esef-auth/ when looking for download links for esef-auth==1.0.0.0 (from esef-sso==1.0.0.0)
Could not find any downloads that satisfy the requirement esef-auth==1.0.0.0 (from esef-sso==1.0.0.0)
Cleaning up...
Removing temporary dir /Users/ahmetdal/.virtualenvs/esef-sso-example/build...
No distributions at all found for esef-auth==1.0.0.0 (from esef-sso==1.0.0.0)
Exception information:
Traceback (most recent call last):
File "/Users/ahmetdal/.virtualenvs/esef-sso-example/lib/python2.7/site-packages/pip/basecommand.py", line 122, in main
status = self.run(options, args)
File "/Users/ahmetdal/.virtualenvs/esef-sso-example/lib/python2.7/site-packages/pip/commands/install.py", line 278, in run
requirement_set.prepare_files(finder, force_root_egg_info=self.bundle, bundle=self.bundle)
File "/Users/ahmetdal/.virtualenvs/esef-sso-example/lib/python2.7/site-packages/pip/req.py", line 1177, in prepare_files
url = finder.find_requirement(req_to_install, upgrade=self.upgrade)
File "/Users/ahmetdal/.virtualenvs/esef-sso-example/lib/python2.7/site-packages/pip/index.py", line 277, in find_requirement
raise DistributionNotFound('No distributions at all found for %s' % req)
DistributionNotFound: No distributions at all found for esef-auth==1.0.0.0 (from esef-sso==1.0.0.0)
Paraît-il, il n'utilise pas les sources dans dependency_links
.
Vous devez vous connecter pour publier un commentaire.
Vous devez assurez-vous d'inclure la dépendance dans votre
install_requires
trop.Voici un exemple
setup.py
Voici la question avec votre exemple
setup.py
:Vous êtes absent le nom de l'egg dans les liens de dépendance vous de l'installation.
Vous avez
https://github.com/egemsoft/esef-auth/tarball/master/#egg=1.0.0.0
Vous avez besoin
https://github.com/egemsoft/esef-auth/tarball/master/#egg=esef-auth-1.0.0.0
Could not find any downloads that satisfy the requirement my-extra-libraray==1.0.0.0 (from my-installed-library-currently==1.0.0.0)
setup.py
que vous utilisez?pip install git+https://github.com/egemsoft/esef-sso.git
. Vous allez probablement voir le résultat.django-simple-sso
ont également été de ma fourche source. Il est à venir à partir de source d'origine à la place. Je pense que,install_requires
ne pas utiliserdependency_links
en tant que source.Pip supprimé le support dependency_links un moment de retour. Le la dernière version de pip qui prend en charge dependency_links est 1.3.1, pour l'installer
vos liens de dépendance devrait fonctionner à ce point. Veuillez noter que dependency_links ont toujours le dernier recours pour le pep, c'est à dire. si un paquet avec le même nom existe sur pypi il sera choisi sur la vôtre.
Note, https://github.com/pypa/pip/pull/1955 semble autoriser les dependency_links, pip gardé, mais vous pourriez avoir besoin d'utiliser certains commutateurs de ligne de commande à utiliser une version plus récente de pip.
MODIFIER: Comme de pip 7 ... ils ont repensé dep liens et ont permis à eux, même s'ils n'ont pas supprimé la désapprobation avis, par les débats qu'ils semblent être là pour rester. Avec pip>=7 voici comment vous pouvez installer des choses
Ou ajouter ce qui suit à un pip.conf, par exemple
/etc/pip.conf
MODIFIER
Un truc que j'ai appris est d'augmenter jusqu'le numéro de version à quelque chose de vraiment élevé pour s'assurer que le pip ne préfère pas la non lien de dépendance version (si c'est quelque chose que vous voulez). À partir de l'exemple ci-dessus, faire le lien de dépendance ressembler à:
Aussi assurez-vous que la version ressemble à l'exemple ou est la date de la version, de toute autre versioning fera pip pense que ses un dev de la version et de l'habitude de l'installer.
J'ai fait face à une situation similaire où je veux utiliser galbées comme l'un de mes dépendances du paquet. Bien faite, cependant, a une mise en garde que si vous utilisez windows, vous devez utiliser l' .whl fichier de http://www.lfd.uci.edu/~gohlke/pythonlibs/. Autrement, vous devez installer un compilateur C, qui est quelque chose que je ne veux pas. Je veux que l'utilisateur de simplement utiliser
pip install mypackage
au lieu d'installer un tas d'autres choses.Et si vous avez la configuration typique avec
dependency_links
et exécuter
python setup.py install
, c'est tout simplement de choisir les douces sur Pypi et causer des problèmes sur l'installation de Windows. Après des heures de recherches, j'ai trouvé ce lien Force setuptools à utiliser dependency_links pour installer mysqlclient et essentiellement l'utilisationfrom setuptools.command.install import install as _install
pour installer manuellement galbées.Et le script fonctionne très bien. Espérons que cela aide.
La
--process-dependency-links
option pour activerdependency_links
était retiré de la Pip 19.0.Au lieu de cela, vous pouvez utiliser un PEP 508 URL pour spécifier votre dépendance, qui est prise en charge depuis Pip 18.1. Voici un exemple extrait de
setup.py
:Noter que Pep ne prend pas en charge l'installation des packages avec ces dépendances depuis PyPI et dans l'avenir vous ne serez pas en mesure de les télécharger sur PyPI (voir le communiqué de l'entrée pour le Pep 18.1).