Certbot: ImportError: ningún módulo llamado 'request.packages.urllib3'

Creado en 12 sept. 2017  ·  37Comentarios  ·  Fuente: certbot/certbot

Utilizo nginx en centos 7.3, hay un error al ejecutar 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'

paquetes:

[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)

¿Qué tengo que hacer?

fedora / redhat / CentOS pkging debugging

Comentario más útil

Actualizar. Esto parece haberlo solucionado ...

pip install requests urllib3 pyOpenSSL --force --upgrade

Todos 37 comentarios

¿Cómo instalaste certbot?
Es probable que pip instalando urllib3 lo solucione, pero podría haber una manera más fácil. Por ejemplo, está empaquetado como rpm, que probablemente sea la forma preferida de instalarlo en centos: https://www.rpmfind.net/linux/rpm2html/search.php?query=python-urllib3
Pero es sorprendente que nada instale esto como una dependencia. ¿Instaló certbot desde su administrador de paquetes? ¿Seguiste estas instrucciones? https://certbot.eff.org/#centosrhel7 -nginx

@SwartzCr Sí, lo hice siguiendo https://certbot.eff.org/#centosrhel7 -nginx

¿Puede intentar actualizar sus versiones de solicitudes y seis como se menciona en el n. ° 4886? Creo que es el mismo problema. @erikrose, ¿ es esta una situación en la que debemos enviar algo en sentido ascendente a centOS o RHEL?

Parece que ya tiene la última versión de las solicitudes, y hay seis, por lo que es una situación diferente a la # 4884.

En CentOS 7, la única forma de obtener urllib3 (1.22) es usando pip install. La versión de yum con epel es muy antigua: python-urllib3.noarch 0: 1.10.2-3.el7 y genera un error de versión incorrecta. Pero, después de instalar certbot-apache con urllib3 v.1.22 en su lugar, obtiene esto cuando ejecuta certbot --apache :
ImportError: No module named 'requests.packages.urllib3'
Creo que tengo todos los paquetes más recientes en su lugar:
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)

Actualizar. Esto parece haberlo solucionado ...

pip install requests urllib3 pyOpenSSL --force --upgrade

Pero luego obtienes esto cuando ejecutas certbot --apache :
AttributeError: 'module' object has no attribute 'rand'

Viendo el mismo problema en una nueva instalación de centos 7.3. También intenté instalar python2-certbot , obteniendo el mismo error que @wardmundy . Estaba intentando ejecutar certbot-2 --standalone .

Intenté instalar una versión anterior, 0.14.0, obtuve el mismo error. Seguí la ruta manual, eso funcionó, obtuve mi certificado con éxito.

@wardmundy y @akosveres, el problema del rand se solucionó en https://github.com/certbot/certbot/commit/7f5f6471fea939c70294c2f31875d90320482861
y se lanzará pronto en una versión de corrección de errores con el número de versión 0.18.2
Esto se debió a que openssl desaprobó su soporte de rand antes de lo previsto, como se explica aquí: https://github.com/certbot/certbot/pull/5112#issuecomment -331046450
¿Las personas siguen experimentando problemas con urllib3?

Intenté instalar certbot en Centos 7 hoy. Sigo este https://certbot.eff.org/#centosrhel7 -otro paso a paso.
cuando intento ejecutar sudo certbot certonly me dice que no se encuentra el urllib3

después de ejecutar pip install requests urllib3 pyOpenSSL --upgrade
el mensaje de error cambia a
ImportError: al módulo 'pyOpenSSL' le falta la funcionalidad requerida. Intente actualizar a v0.14 o más reciente.

Recibí el mismo error como @DeronLee .
¿Algo nuevo?

@jcguevara finalmente encontré que la mejor manera es usar docker

Al menos en algunos de estos casos, sospecho de los entornos de Python corruptos donde los paquetes se han pip instalados, anulando las versiones de los paquetes proporcionados por su sistema operativo. Le recomendamos encarecidamente que no haga esto.

Si ya se encuentra en esta posición, le recomiendo que use certbot-auto, que tiene una dependencia mínima de los paquetes de Python que se encuentran en su sistema.

@DeronLee gracias por tu consejo.

Simplemente lo resuelvo descargándolo directamente desde GitHub y ejecutando certbot-auto como recomienda @bmw .

@jcguevara Gracias. Voy a intentarlo más tarde.

cerbot-auto sorprendentemente funciona! ¿Por qué hay tantas herramientas adicionales para hacer esto? (ˇˍˇ)

razón:

  • env: mac osx + Python2.7.13
  • ustedes deben verificar la versión openssl .
  • la versión de openssl predeterminada de mac osx es 0.9.8zh 14 Jan 2016 .
  • cuando usa brew install openssl , la versión actual es stable 1.0.2l .
  • pero si usa brew install [email protected] , esta versión Causará No Module Found Urllib3 problema.

Como arreglar:


brew uninstall [email protected]

# openssl: stable 1.0.2l
brew install openssl

  • luego, encontrará que el problema Urllib3 está solucionado.

Después de ejecutar este comando
pip install requests urllib3 pyOpenSSL --force --upgrade

Como dijo @DeronLee :

el mensaje de error cambia a
ImportError: al módulo 'pyOpenSSL' le falta la funcionalidad requerida. Intente actualizar a v0.14 o más reciente.

Instalo pyOpenSSL versión 16.2.0 y funcionó para mí.
pip install pyOpenSSL==16.2.0

Gracias. Intento instalar la última versión pero no funciona. Talvez yo
debería probar la versión especial

El 11 de noviembre de 2017, 1:04 a. M., "Nguyễn Thanh Tiến" [email protected]
escribió:

Después de ejecutar este comando
solicitudes de instalación de pip urllib3 pyOpenSSL --force --upgrade

Como dijo @DeronLee https://github.com/deronlee :

el mensaje de error cambia a
ImportError: al módulo 'pyOpenSSL' le falta la funcionalidad requerida. Tratar
actualizando a v0.14 o más reciente.

Instalo pyOpenSSL versión 16.2.0 y funcionó para mí.
pip install pyOpenSSL == 16.2.0

-
Estás recibiendo esto porque te mencionaron.
Responda a este correo electrónico directamente, véalo en GitHub
https://github.com/certbot/certbot/issues/5104#issuecomment-343529478 ,
o silenciar el hilo
https://github.com/notifications/unsubscribe-auth/ALj8rHCKhYhwrgCEfvzwVaveagxIVMmtks5s1IIBgaJpZM4PUFnt
.

@ thanhtien522
Gracias. Intento instalar la última versión pero no funciona. Quizás debería probar la versión especial

@DeronLee, ¿puedes decirme?

  • ¿Qué versión de su sistema operativo está ejecutando?
  • ¿Qué versión de Certbot ha instalado?
  • Cómo instaló Certbot
  • La salida de pip freeze ?

@SwartzCr Tengo el mismo problema con @DeronLee
Entonces ejecuto el comando
pip install requests urllib3 pyOpenSSL --force --upgrade
y recibí un error como este:
ImportError: 'pyOpenSSL' module missing required functionality. Try upgrading to v0.14 or newer.
Luego probé lo que @ thanhtien522 mencionó en ejecución
pip install pyOpenSSL==16.2.0
Pero todavía no funciona para mí, todavía tengo el mismo error que me dice que falta pyOpenSSL .

  • SO: PRETTY_NAME="CentOS Linux 7 (Core)"
  • Versión de Certbot: certbot.noarch 0.19.0-1.el7 @epel
  • Certbot instalado ejecutando yum install certbot-nginx
  • Y la salida de pip freeze se muestra a continuación
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

Parece que, ante todo, necesitamos aumentar la versión de pyOpenSSL de la que dependemos para certbot en centos, esto es lo que obtengo en una instalación nueva:

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

Donde probablemente debería ser una versión superior a 0.14
Lo que podría significar que alguien necesita empaquetarlo para centos: @bmw es @hogarthj la persona con la que debo contactar al respecto?

Sí, hogarthj es nuestro contacto de empaquetado de Red Hat / Fedora, pero responde mejor por correo electrónico. Me complace presentarles en algún momento, pero no creo que se necesiten cambios aquí.

CentOS 7 es una de nuestras plataformas más populares y probamos regularmente en CentOS 7 sin problemas. La mayoría de las personas en este hilo informan tener solicitudes 2.18.x. Las solicitudes 2.6.0 se incluyen en los repositorios de CentOS 7. Si mezcla paquetes de Python de su sistema operativo y pip , lo pasará mal.

Las personas en CentOS 7 que tienen este problema pueden solucionar el problema deshaciendo los cambios en sus paquetes de Python realizados a través de pip o usando certbot-auto que soluciona el problema al no depender de los paquetes de Python instalados en su sistema. .

Seguí estas instrucciones (mi versión de urllib3 no funcionó tan bien) y luego certbot se pudo ejecutar ... Con suerte, eso ayuda.

Estoy seguro de que estos se pueden colapsar en menos comandos ...

solicitudes de desinstalación de pip
pip desinstalar urllib3
yum eliminar python-urllib3
yum eliminar solicitudes de python
yum instalar python-urllib3
yum instalar solicitudes de python
yum instalar certbot

Lo probé, utilicé estos comandos y ¡funciona!

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

¿Podemos usar pip más adelante en el futuro después de usar yum?

@sreezree, no debe usar pip para instalar paquetes relacionados con certbot, ya que entrarán en conflicto con los que instala certbot

Ninguno de los métodos mencionados anteriormente funciona para mí, el mensaje de error sigue siendo el mismo. ImportError: No module named 'requests.packages.urllib3'

Me encuentro con el mismo error en CentOS 7.4:
ImportError: ningún módulo llamado 'request.packages.urllib3'
y probé la solución sugerida por smalenfant. Funciona maravillosamente.

Tengo el mismo error.

Encontré que tiene un error al instalar 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

e intento reinstalarlo y luego tengo el mismo error

# 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!

ha fallado, pero muestra final Complete! , ¿cómo Complete! ?

Entonces encontré a los amigos de Tianchao que dijeron que hay conflicto con la versión de pip.

https://blog.csdn.net/u013614281/article/details/76832818

y desinstalo la versión pip e instalo la versión yum

pip uninstall urllib3
yum install python-urllib3

después de eso recibí otro error

pkg_resources.DistributionNotFound: The 'urllib3<1.23,>=1.21.1' distribution was not found and is required by requests

entonces, que carajo, estoy llorando 😭

después de eso lo intenté

pip uninstall requests
yum remove python-requests
yum install python-requests
yum install certbot

y funciona .....

así que creo que la versión de las solicitudes no coincide con urllib3

así que probó en otra misma máquina env

primero eliminar solicitudes y urllib3

pip uninstall requests
pip uninstall urllib3
yum remove python-urllib3
yum remove python-requests

instalar certbot

esta bien

En realidad, este error se imprime debido a un intento fallido ... captura en el código interno de Python de las solicitudes:

try: 
   import urllib3
except: 
   import requests.packages.urllib3

Este problema ocurre cuando no se puede encontrar urllib3, pero también cuando no se puede cargar urllib3 por cualquier motivo.

Puede eliminar el antiguo cerbot y luego intentar instalarlo a través de pip. que debería funcionar.

sudo pip install certbot

Lo probé, utilicé estos comandos y ¡funciona!

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

¡Genial, problema resuelto!

Se recomienda la instalación mediante el

Para aclarar, el método de instalación recomendado en los sistemas basados ​​en RHEL 7 es utilizar EPEL .

Los problemas en este hilo generalmente son causados ​​por una instalación de Python rota causada por paquetes instalados desde pip entran en conflicto con los instalados desde yum . Eliminar los paquetes que ha instalado a través de pip debería resolver el problema.

¿Fue útil esta página
0 / 5 - 0 calificaciones