Certbot: ImportError: Aucun module nommé 'requests.packages.urllib3'

Créé le 12 sept. 2017  ·  37Commentaires  ·  Source: certbot/certbot

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?

fedora / redhat / CentOS pkging debugging

Commentaire le plus utile

Mettre à jour. Cela semble l'avoir corrigé ...

pip install requests urllib3 pyOpenSSL --force --upgrade

Tous les 37 commentaires

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? (ˇˍˇ)

raison:

  • env: mac osx + Python2.7.13
  • vous devriez vérifier la version openssl .
  • la version openssl par défaut de mac osx est 0.9.8zh 14 Jan 2016 .
  • lorsque vous utilisez brew install openssl , la version actuelle est stable 1.0.2l .
  • mais si vous utilisez brew install [email protected] , cette version causera No Module Found Urllib3 problème

Comment réparer:


brew uninstall [email protected]

# openssl: stable 1.0.2l
brew install openssl

  • Ensuite, vous trouverez que le problème 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 --upgrade

Comme 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:

  • Quelle version de votre système d'exploitation utilisez-vous?
  • Quelle version de Certbot avez-vous installée?
  • Comment vous avez installé Certbot
  • La sortie de 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.

  • Système d'exploitation: PRETTY_NAME="CentOS Linux 7 (Core)"
  • Version Certbot: certbot.noarch 0.19.0-1.el7 @epel
  • Certbot installé en exécutant yum install certbot-nginx
  • Et la sortie de pip freeze est indiquée ci-dessous
acme==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.

Cette page vous a été utile?
0 / 5 - 0 notes