Impossible de trouver une version satisfaisant à l'exigence <package>

139

J'installe plusieurs packages Python dans Ubuntu 12.04 en utilisant le requirements.txtfichier suivant :

numpy>=1.8.2,<2.0.0
matplotlib>=1.3.1,<2.0.0
scipy>=0.14.0,<1.0.0
astroML>=0.2,<1.0
scikit-learn>=0.14.1,<1.0.0
rpy2>=2.4.3,<3.0.0

et ces deux commandes:

$ pip install --download=/tmp -r requirements.txt
$ pip install --user --no-index --find-links=/tmp -r requirements.txt

(le premier télécharge les packages et le second les installe).

Le processus est fréquemment arrêté avec l'erreur:

  Could not find a version that satisfies the requirement <package> (from matplotlib<2.0.0,>=1.3.1->-r requirements.txt (line 2)) (from versions: )
No matching distribution found for <package> (from matplotlib<2.0.0,>=1.3.1->-r requirements.txt (line 2))

que je corrige manuellement avec:

pip install --user <package>

puis exécutez à nouveau la deuxième pip installcommande.

Mais cela ne fonctionne que pour ce package particulier. Lorsque pip installj'exécute à nouveau la deuxième commande, le processus s'arrête maintenant en me plaignant d' un autre package requis et je dois répéter le processus, c'est-à-dire: installez le nouveau package requis manuellement (avec la commande ci-dessus), puis exécutez la deuxième pip installcommande.

Jusqu'à présent , j'ai dû installer manuellement six, pytz, noseet maintenant il se plaint de besoin mock.

Existe-t-il un moyen de dire pipd'installer automatiquement toutes les dépendances nécessaires pour ne pas avoir à le faire manuellement une par une?

Ajouter : cela ne se produit que dans Ubuntu 12.04 BTW. Dans Ubuntu 14.04, les pip installcommandes appliquées au requirements.txtfichier fonctionnent sans problème.

Gabriel
la source
1
Parfois, votre projet Django peut dépendre de packages de brassage locaux. Vérifiez que vous les avez installés!
James111
J'ai eu le même problème, avec 'python -m pip install flask', j'ai pu l'installer
Freelancer

Réponses:

47

Cette approche (avoir toutes les dépendances dans un répertoire et ne pas télécharger à partir d'un index) ne fonctionne que lorsque le répertoire contient tous les packages. Le répertoire doit donc contenir toutes les dépendances , mais aussi tous les paquets que ces dépendances dépendent (par exemple six, pytzetc.).

Vous devez donc les inclure manuellement requirements.txt(pour que la première étape les télécharge explicitement) ou vous devez installer tous les packages à l'aide de PyPI, puis pip freeze > requirements.txtstocker la liste de tous les packages nécessaires.

Siméon Visser
la source
Donc, le seul moyen de savoir quelles sont toutes les exigences est de freezeplacer les packages installés dans une configuration de travail, puis d'ajouter tout ce qui s'y trouve au requirements.txtfichier?
Gabriel
2
@Gabriel: actuellement oui car de nombreux packages Python sont installés en exécutant un setup.pyfichier contenant les dépendances dont ils ont besoin. Cela devrait s'améliorer une fois que les packages Python deviennent des fichiers wheel ( pythonwheels.com ) qui vous permettent de rassembler une liste de tous les packages nécessaires sans exécuter de code arbitraire dans les setup.pyfichiers.
Simeon Visser
1
Merci pour l'explication Siméon. Une dernière chose si cela ne vous dérange pas: pourquoi cela ne se produit-il pas dans Ubuntu 14.04 mais dans Ubuntu 12.04?
Gabriel
4
@Gabriel: Je ne suis pas sûr - d'après mon expérience, pipil abandonne toujours quand il ne trouve pas de package à installer. Cela étant dit, il pipest activement développé, il se peut donc que vous ayez une version avec laquelle je n'ai pas travaillé.
Simeon Visser
@SimeonVisser, "[les roues] vous permettent de rassembler une liste de tous les paquets nécessaires sans exécuter de code arbitraire", intéressant, comment faire ça (maintenant)?
sschuberth
39

J'avais installé python3 mais mon python dans / usr / bin / python était toujours l'ancienne version 2.7

Cela a fonctionné ( <pkg>c'était pyserialdans mon cas):

python3 -m pip install <pkg>
gueule
la source
1
cela se produit quand dans setuptools il y a python_requires='>=3.0'comme exigence
Juan-Kabbali
11

Après 2 heures de recherche, j'ai trouvé un moyen de le réparer avec une seule ligne de commande. Vous devez connaître la version du package (il suffit de rechercher la version du PACKAGE).

Commander:

python3 -m pip install --pre --upgrade PACKAGE==VERSION.VERSION.VERSION
Jagd_Panzer_E100
la source
9

La commande ci-dessous a fonctionné pour moi -

python -m pip install flask
Pigiste
la source
4

Essayez d'installer flask via le PowerShell à l'aide de la commande suivante.

pip install --isolated Flask

Cela permettra à l'installation d'éviter les variables d'environnement et la configuration utilisateur.

user3782287
la source
3

Pas toujours, mais dans certains cas, le package existe déjà. Par exemple - getpass. Il n'est pas répertorié par "pip list" mais il peut être importé et utilisé:

entrez la description de l'image ici

Si j'essaye d'installer getpass par pip, j'obtiens l'erreur suivante: "Impossible de trouver une version qui satisfait à l'exigence getpass"

svinec
la source
1

Si vous rencontrez ce problème sur le lieu de travail. Cela pourrait être la solution pour vous.

pip install -U <package_name> --user --proxy=<your proxy>
pk786
la source
-7

Utilisez l'invite de commandes, puis sélectionnez Exécuter en tant qu'administrateur.

Mettre à niveau la version pip

Pour mettre à niveau PIP, tapez cette commande, puis appuyez sur Entrée: -

python.exe -m pip install --upgrade pip

Revenez au chemin python C: \ Users \ Jack \ AppData \ Local \ Programs \ Python \ Python37 \ Scripts

Tapez le carnet de notes Jupyter

Vous serez redirigé vers http: // localhost: 8888 / undefined / tree - Page d'accueil de Jupyter

J'espère que ça aide !!!!!!!!!!!

arup.dutta22
la source
2
Qu'est-ce que jupyter a à voir avec ça?
Bzazz
comment la mise à niveau de pip peut-elle résoudre les dépendances? Il nécessite des dépendances dans le répertoire appelant.
Rizwan Javid
-8

pourrait aider

roue d'installation sudo pip == 0.29.0

Trisha Chetani
la source
4
Désolé .. Je ne lis pas le chinois ou une autre langue asiatique. Le lien de parrainage pourrait se rompre à l'avenir ... veuillez publier les informations essentielles ici. Comme affiché sa réponse de faible qualité sans contexte.
ZF007 du
1
Le lien de parrainage est en japonais ... veuillez envisager de partager des liens en anglais
javidazac
6
Le code est compréhensible pour tous les développeurs et la quantité de japonais est à la fois minime et un peu plus que les titres introduisant le code suivant (traduisez-le si c'est trop difficile pour vous mais vous n'avez vraiment pas besoin de le faire pour comprendre ce qui se passe). Il ne devrait pas y avoir de problème avec des langues autres que l'anglais utilisées tant que les exemples de code sont clairs et ne dépendent pas complètement de la langue étrangère utilisée.
rg88
6
@ rg88 Ce serait bien pour un commentaire (peut-être avec une mise en garde) mais une réponse sur Stack Overflow devrait être autonome et convaincante.
tripleee