J'utilise nginx sur centos 7.3, il y a une erreur lors de l'exécution de certbot --nginx
:
ImportError: No module named 'requests.packages.urllib3'
[root<strong i="9">@demo</strong> src]# certbot --nginx
Traceback (most recent call last):
File "/usr/bin/certbot", line 9, in <module>
load_entry_point('certbot==0.14.1', 'console_scripts', 'certbot')()
File "/usr/lib/python2.7/site-packages/pkg_resources/__init__.py", line 564, in load_entry_point
return get_distribution(dist).load_entry_point(group, name)
File "/usr/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2662, in load_entry_point
return ep.load()
File "/usr/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2316, in load
return self.resolve()
File "/usr/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2322, in resolve
module = __import__(self.module_name, fromlist=['__name__'], level=0)
File "/usr/lib/python2.7/site-packages/certbot/main.py", line 14, in <module>
from certbot import account
File "/usr/lib/python2.7/site-packages/certbot/account.py", line 17, in <module>
from acme import messages
File "/usr/lib/python2.7/site-packages/acme/messages.py", line 4, in <module>
from acme import challenges
File "/usr/lib/python2.7/site-packages/acme/challenges.py", line 10, in <module>
import requests
File "/usr/lib/python2.7/site-packages/requests/__init__.py", line 58, in <module>
from . import utils
File "/usr/lib/python2.7/site-packages/requests/utils.py", line 32, in <module>
from .exceptions import InvalidURL
File "/usr/lib/python2.7/site-packages/requests/exceptions.py", line 10, in <module>
from .packages.urllib3.exceptions import HTTPError as BaseHTTPError
File "/usr/lib/python2.7/site-packages/requests/packages/__init__.py", line 95, in load_module
raise ImportError("No module named '%s'" % (name,))
ImportError: No module named 'requests.packages.urllib3'
paquets:
[root<strong i="13">@demo</strong> src]# pip list
acme (0.14.1)
backports.ssl-match-hostname (3.4.0.2)
certbot (0.14.1)
certifi (2017.7.27.1)
cffi (1.6.0)
chardet (3.0.4)
Cheetah (2.4.4)
cloud-init (0.7.6)
ConfigArgParse (0.11.0)
configobj (4.7.2)
cryptography (1.3.1)
decorator (3.4.0)
enum34 (1.0.4)
future (0.16.0)
idna (2.6)
iniparse (0.4)
ipaddress (1.0.16)
IPy (0.75)
Jinja2 (2.9.6)
jsonpatch (1.16)
jsonpointer (1.10)
kitchen (1.1.1)
Markdown (2.6.8)
MarkupSafe (1.0)
mock (1.0.1)
ndg-httpsclient (0.3.2)
oauth (1.0.1)
parsedatetime (1.5)
perf (0.1)
pip (9.0.1)
ply (3.4)
policycoreutils-default-encoding (0.1)
prettytable (0.7.2)
psutil (2.2.1)
pyasn1 (0.1.9)
pycparser (2.14)
pycurl (7.19.0)
pygobject (3.14.0)
pygpgme (0.3)
pyliblzma (0.5.3)
pyOpenSSL (0.13.1)
pyparsing (1.5.6)
pyRFC3339 (1.0)
python2-pythondialog (3.3.0)
pytz (2012d)
pyudev (0.15)
pyxattr (0.5.1)
PyYAML (3.12)
requests (2.18.4)
seobject (0.1)
sepolicy (1.1)
setuptools (36.2.7)
six (1.9.0)
slip (0.4.0)
slip.dbus (0.4.0)
urlgrabber (3.10)
urllib3 (1.22)
yum-axelget (1.0.4)
yum-metadata-parser (1.1.4)
zope.component (4.1.0)
zope.event (4.0.3)
zope.interface (4.0.5)
Que devrais-je faire?
Comment avez-vous installé certbot?
Il est probable que pip installant urllib3 devrait résoudre ce problème - mais il pourrait y avoir un moyen plus simple. Par exemple, il est emballé sous forme de rpm, ce qui est probablement le moyen préféré de l'installer sur centos: https://www.rpmfind.net/linux/rpm2html/search.php?query=python-urllib3
Mais il est surprenant que rien ne l'installe en tant que dépendance. Avez-vous installé certbot à partir de votre gestionnaire de packages? Avez-vous suivi ces instructions? https://certbot.eff.org/#centosrhel7 -nginx
@SwartzCr Oui, je l'ai fait en suivant https://certbot.eff.org/#centosrhel7 -nginx
Pouvez-vous essayer de mettre à jour vos versions de requêtes et six comme mentionné dans # 4886 - je pense que c'est le même problème. @erikrose est-ce une situation où nous devons soumettre quelque chose en amont à centOS ou RHEL?
Il semble déjà avoir la dernière version des requêtes, et six sont là, donc c'est une situation différente de # 4884.
Sur CentOS 7, le seul moyen d'obtenir urllib3 (1.22) est d'utiliser pip install. La version yum avec epel est très ancienne: python-urllib3.noarch 0: 1.10.2-3.el7 et déclenche une erreur de version. Mais, après avoir installé certbot-apache avec urllib3 v.1.22 en place, vous obtenez ceci lors de l'exécution de certbot --apache :
ImportError: No module named 'requests.packages.urllib3'
Je pense que j'ai tous les derniers packages en place:
certbot (0.18.1)
certbot-apache (0.18.1)
certifi (2017.7.27.1)
pycurl (7.19.0)
requests (2.18.4)
six (1.11.0)
urlgrabber (3.10)
urllib3 (1.22)
Mettre à jour. Cela semble l'avoir corrigé ...
pip install requests urllib3 pyOpenSSL --force --upgrade
Mais alors vous obtenez ceci lors de l'exécution de certbot --apache :
AttributeError: 'module' object has no attribute 'rand'
Voir le même problème sur une toute nouvelle installation de centos 7.3. J'ai également essayé d'installer python2-certbot
, obtenant la même erreur que @wardmundy . J'essayais d'exécuter certbot-2 --standalone
.
J'ai essayé d'installer une version plus ancienne, 0.14.0, j'ai eu la même erreur. J'ai emprunté la voie manuelle, cela a fonctionné, j'ai obtenu mon certificat avec succès.
@wardmundy et @akosveres, le problème de rand a été résolu dans https://github.com/certbot/certbot/commit/7f5f6471fea939c70294c2f31875d90320482861
et sera bientôt publié dans une version de correction de bogue avec le numéro de version 0.18.2
Cela a été causé par le fait qu'openssl a abandonné son support de rand avant la date prévue, comme indiqué ici: https://github.com/certbot/certbot/pull/5112#issuecomment -331046450
Les utilisateurs rencontrent-ils toujours des problèmes avec Urllib3?
J'ai essayé d'installer certbot sur Centos 7 aujourd'hui. Je suis cette https://certbot.eff.org/#centosrhel7 -autre étape par étape.
quand j'essaye d'exécuter sudo certbot certonly
il m'a dit que l'urllib3 est introuvable
après avoir exécuté pip install requests urllib3 pyOpenSSL --upgrade
le message d'erreur devient
ImportError: le module 'pyOpenSSL' n'a pas la fonctionnalité requise. Essayez de mettre à niveau vers la v0.14 ou une version plus récente.
J'ai eu la même erreur que @DeronLee .
Rien de nouveau?
@jcguevara enfin j'ai trouvé que le meilleur moyen est d'utiliser docker
Au moins dans certains de ces cas, je me méfie des environnements Python corrompus dans lesquels des packages ont été installés pip
, remplaçant les versions des packages fournis par votre système d'exploitation. Nous vous recommandons fortement de ne pas faire cela.
Si vous vous êtes déjà retrouvé dans cette position, je vous recommande d'utiliser certbot-auto qui
@DeronLee merci pour vos conseils.
Je viens de le résoudre en le téléchargeant directement à partir de GitHub et en exécutant certbot-auto comme @bmw recommandé.
@jcguevara Merci. Je vais essayer plus tard.
cerbot-auto fonctionne étonnamment! pourquoi y a-t-il autant d'outils supplémentaires pour faire cela? (ˇˍˇ)
mac osx
+ Python2.7.13
openssl
.0.9.8zh 14 Jan 2016
.brew install openssl
, la version actuelle est stable 1.0.2l
.brew install [email protected]
, cette version causera No Module Found Urllib3
problème
brew uninstall [email protected]
# openssl: stable 1.0.2l
brew install openssl
Urllib3
est résolu.Après avoir exécuté cette commande
pip install requests urllib3 pyOpenSSL --force --upgrade
Comme l'a dit @DeronLee :
le message d'erreur devient
ImportError: le module 'pyOpenSSL' n'a pas la fonctionnalité requise. Essayez de mettre à niveau vers la v0.14 ou une version plus récente.
J'installe pyOpenSSL version 16.2.0 et cela a fonctionné pour moi.
pip install pyOpenSSL==16.2.0
Merci. J'essaye d'installer la dernière version mais ne fonctionne pas. Peut-être que je
devrait essayer la version spéciale
Le 11 novembre 2017 à 01h04, "Nguyễn Thanh Tiến" [email protected]
a écrit:
Après avoir exécuté cette commande
pip demandes d'installation urllib3 pyOpenSSL --force --upgradeComme l'a dit @DeronLee https://github.com/deronlee :
le message d'erreur devient
ImportError: le module 'pyOpenSSL' n'a pas la fonctionnalité requise. Essayer
mise à niveau vers la v0.14 ou une version plus récente.J'installe pyOpenSSL version 16.2.0 et cela a fonctionné pour moi.
pip installer pyOpenSSL == 16.2.0-
Vous recevez cela parce que vous avez été mentionné.
Répondez directement à cet e-mail, affichez-le sur GitHub
https://github.com/certbot/certbot/issues/5104#issuecomment-343529478 ,
ou couper le fil
https://github.com/notifications/unsubscribe-auth/ALj8rHCKhYhwrgCEfvzwVaveagxIVMmtks5s1IIBgaJpZM4PUFnt
.
@ thanhtien522
Merci. J'essaye d'installer la dernière version mais ne fonctionne pas. Peut-être que je devrais essayer la version spéciale
@DeronLee pouvez-vous me dire:
pip freeze
?@SwartzCr J'ai le même problème avec @DeronLee
Alors je lance la commande
pip install requests urllib3 pyOpenSSL --force --upgrade
et j'ai eu une erreur comme celle-ci:
ImportError: 'pyOpenSSL' module missing required functionality. Try upgrading to v0.14 or newer.
Ensuite, j'ai essayé ce que @ thanhtien522 a mentionné en cours d'exécution
pip install pyOpenSSL==16.2.0
Mais cela ne fonctionne toujours pas pour moi, j'ai toujours la même erreur qui me dit que pyOpenSSL
est manquant.
PRETTY_NAME="CentOS Linux 7 (Core)"
certbot.noarch 0.19.0-1.el7 @epel
yum install certbot-nginx
pip freeze
est indiquée ci-dessousacme==0.19.0
asn1crypto==0.23.0
backports.ssl-match-hostname==3.4.0.2
certbot==0.19.0
certbot-nginx==0.19.0
certifi==2017.11.5
cffi==1.11.2
chardet==3.0.4
Cheetah==2.4.4
cloud-init==0.7.6
ConfigArgParse==0.11.0
configobj==4.7.2
cryptography==2.1.4
decorator==3.4.0
enum34==1.1.6
future==0.16.0
idna==2.6
iniparse==0.4
ipaddress==1.0.18
IPy==0.75
Jinja2==2.9.6
jsonpatch==1.16
jsonpointer==1.12
kitchen==1.1.1
Markdown==2.6.9
MarkupSafe==1.0
mock==1.0.1
ndg-httpsclient==0.3.2
oauth==1.0.1
parsedatetime==1.5
perf==0.1
ply==3.4
policycoreutils-default-encoding==0.1
prettytable==0.7.2
psutil==2.2.1
pyasn1==0.1.9
pycparser==2.18
pycurl==7.19.0
pygobject==3.22.0
pygpgme==0.3
pyliblzma==0.5.3
pyOpenSSL==16.2.0
pyparsing==1.5.6
pyRFC3339==1.0
python-linux-procfs==0.4.9
python2-pythondialog==3.3.0
pytz==2016.10
pyudev==0.15
pyxattr==0.5.1
PyYAML==3.12
requests==2.18.4
schedutils==0.4
seobject==0.1
sepolicy==1.1
six==1.11.0
slip==0.4.0
slip.dbus==0.4.0
urlgrabber==3.10
urllib3==1.22
yum-metadata-parser==1.1.4
zope.component==4.1.0
zope.event==4.0.3
zope.interface==4.0.5
Il semble que nous devions avant tout modifier la version de pyOpenSSL dont nous dépendons pour certbot en centos, voici ce que j'obtiens sur une nouvelle installation:
Dependencies Resolved
==================================================================================================
Package Arch Version Repository Size
==================================================================================================
Installing:
python2-certbot-nginx noarch 0.19.0-1.el7 epel 53 k
Installing for dependencies:
certbot noarch 0.19.0-1.el7 epel 20 k
dialog x86_64 1.2-4.20130523.el7 base 208 k
pyOpenSSL x86_64 0.13.1-3.el7 base 133 k
pyparsing noarch 1.5.6-9.el7 base 94 k
python-cffi x86_64 1.6.0-5.el7 base 218 k
python-enum34 noarch 1.0.4-1.el7 base 52 k
python-idna noarch 2.4-1.el7 base 94 k
python-ipaddress noarch 1.0.16-2.el7 base 34 k
python-ndg_httpsclient noarch 0.3.2-1.el7 epel 43 k
python-parsedatetime noarch 1.5-3.el7 epel 61 k
python-ply noarch 3.4-11.el7 base 123 k
python-pycparser noarch 2.14-1.el7 base 104 k
python-zope-component noarch 1:4.1.0-3.el7 epel 227 k
python-zope-event noarch 4.0.3-2.el7 epel 79 k
python-zope-interface x86_64 4.0.5-4.el7 base 138 k
python2-acme noarch 0.19.0-1.el7 epel 176 k
python2-certbot noarch 0.19.0-1.el7 epel 471 k
python2-configargparse noarch 0.11.0-1.el7 epel 30 k
python2-cryptography x86_64 1.7.2-1.el7_4.1 updates 502 k
python2-dialog noarch 3.3.0-6.el7 epel 94 k
python2-future noarch 0.16.0-2.el7 epel 799 k
python2-mock noarch 1.0.1-9.el7 epel 92 k
python2-psutil x86_64 2.2.1-3.el7 epel 116 k
python2-pyasn1 noarch 0.1.9-7.el7 base 100 k
python2-pyrfc3339 noarch 1.0-2.el7 epel 13 k
pytz noarch 2016.10-2.el7 base 46 k
Où cela devrait probablement être une version supérieure à 0.14
Ce qui pourrait signifier que quelqu'un doit le conditionner pour centos - @bmw est @hogarthj la personne que je devrais contacter à ce sujet?
Oui, hogarthj est notre contact Red Hat / Fedora pour les emballages, mais il est plus réactif par e-mail. Je suis heureux de vous présenter un jour, mais je ne pense pas qu'il y ait des changements nécessaires de sa part ici.
CentOS 7 est l'une de nos plates-formes les plus populaires et nous testons régulièrement CentOS 7 sans problème. La plupart des personnes de ce fil rapportent avoir des requêtes 2.18.x. Requests 2.6.0 est inclus dans les dépôts CentOS 7. Si vous mélangez les packages Python de votre système d'exploitation et pip
, vous allez passer un mauvais moment.
Les personnes sur CentOS 7 ayant ce problème peuvent contourner le problème en annulant les modifications apportées à leurs packages Python effectuées via pip
ou en utilisant certbot-auto qui contourne le problème en ne s'appuyant pas sur les packages Python installés sur votre système .
J'ai suivi ces instructions (ma version d'urllib3 ne fonctionnait pas aussi bien) et puis certbot pourrait être exécuté ... J'espère que cela aide.
Je suis sûr que ceux-ci peuvent être réduits en moins de commandes ...
demandes de désinstallation pip
pip désinstaller urllib3
miam supprimer python-urllib3
miam supprimer les requêtes python
miam installer python-urllib3
yum installer des requêtes python
yum installer certbot
Je l'ai essayé, utilisez ces commandes et ça marche!
pip uninstall requests
pip uninstall urllib3
yum remove python-urllib3
yum remove python-requests
yum install python-urllib3
yum install python-requests
yum install certbot
yum install docker-compose
pouvons-nous utiliser pip plus tard dans le futur après avoir utilisé yum?
@sreezree vous ne devez pas utiliser pip pour installer les packages liés à certbot car ils entreront en conflit avec ceux que certbot installe
Aucune de ces méthodes mentionnées ci-dessus ne fonctionne pour moi, le message d'erreur reste le même. ImportError: No module named 'requests.packages.urllib3'
Je rencontre la même erreur sur CentOS 7.4:
ImportError: Aucun module nommé 'requests.packages.urllib3'
et a essayé la solution suggérée par smalenfant. Fonctionne à merveille.
J'ai eu la même erreur.
J'ai trouvé qu'il y avait une erreur lors de l'installation de certbot
Installing : pytz-2016.10-2.el7.noarch 12/55
Installing : python2-parsedatetime-2.4-5.el7.noarch 13/55
Installing : python-urllib3-1.10.2-5.el7.noarch 14/55
Error unpacking rpm package python-urllib3-1.10.2-5.el7.noarch
error: unpacking of archive failed on file /usr/lib/python2.7/site-packages/urllib3/packages/ssl_match_hostname: cpio: rename
Installing : libsemanage-python-2.5-11.el7.x86_64 15/55
error: python-urllib3-1.10.2-5.el7.noarch: install failed
Installing : python-ndg_httpsclient-0.3.2-1.el7.noarch 16/55
Installing : python2-six-1.9.0-0.el7.noarch 17/55
error: unpacking of archive failed on file /usr/lib/python2.7/site-packages/urllib3/packages/ssl_match_hostname: cpio: rename
error: python-urllib3-1.10.2-5.el7.noarch: install failed
et j'essaye de le réinstaller puis j'ai la même erreur
# yum install python-urllib3
Error unpacking rpm package python-urllib3-1.10.2-5.el7.noarch
error: unpacking of archive failed on file /usr/lib/python2.7/site-packages/urllib3/packages/ssl_match_hostname: cpio: rename
Verifying : python-urllib3-1.10.2-5.el7.noarch 1/1
Failed:
python-urllib3.noarch 0:1.10.2-5.el7
Complete!
ça a échoué mais le show final Complete!
, comment ça Complete!
?
donc i gg a trouvé des amis tianchao ont dit que c'était en conflit avec la version pip
https://blog.csdn.net/u013614281/article/details/76832818
et je désinstalle la version pip et installe la version yum
pip uninstall urllib3
yum install python-urllib3
après cela j'ai eu une autre erreur
pkg_resources.DistributionNotFound: The 'urllib3<1.23,>=1.21.1' distribution was not found and is required by requests
alors, putain, je pleure 😭
après avoir essayé
pip uninstall requests
yum remove python-requests
yum install python-requests
yum install certbot
et il fonctionne .....
donc je pense que la version des demandes ne correspond pas à urllib3
donc il a essayé dans une autre machine d'environnement
supprimer d'abord les requêtes et urllib3
pip uninstall requests
pip uninstall urllib3
yum remove python-urllib3
yum remove python-requests
installer certbot
ça va
Cette erreur est en fait affichée en raison d'un échec de try..catch dans le code Python interne des requêtes:
try:
import urllib3
except:
import requests.packages.urllib3
Ce problème se produit lorsque urllib3 est introuvable, mais également lorsque urllib3 ne peut pas être chargé pour une raison quelconque.
Vous pouvez supprimer l'ancien cerbot, puis essayer de l'installer via pip. qui devrait fonctionner.
sudo pip install certbot
Je l'ai essayé, utilisez ces commandes et ça marche!
pip uninstall requests pip uninstall urllib3 yum remove python-urllib3 yum remove python-requests yum install python-urllib3 yum install python-requests yum install certbot yum install docker-compose
Super, problème résolu!
L'installation par script certbot-auto est recommandée, qui n'a pas ce problème.
Pour clarifier, la méthode d'installation recommandée sur les systèmes RHEL 7 est d'utiliser EPEL .
Les problèmes dans ce fil sont généralement causés par une installation Python cassée causée par des packages installés à partir de pip
conflit avec ceux installés à partir de yum
. La suppression des packages que vous avez installés via pip
devrait résoudre le problème.
Commentaire le plus utile
Mettre à jour. Cela semble l'avoir corrigé ...
pip install requests urllib3 pyOpenSSL --force --upgrade