Eu uso o nginx no centos 7.3, há um erro ao executar 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'
pacotes:
[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)
O que devo fazer?
Como você instalou o certbot?
É provável que o pip instalando o urllib3 conserte isso - mas pode haver uma maneira mais fácil. Por exemplo, está empacotado como rpm, que é provavelmente a maneira preferida de instalá-lo em centos: https://www.rpmfind.net/linux/rpm2html/search.php?query=python-urllib3
Mas é surpreendente que nada tenha instalado isso como uma dependência. Você instalou o certbot do seu gerenciador de pacotes? Você seguiu essas instruções? https://certbot.eff.org/#centosrhel7 -nginx
@SwartzCr Sim, fiz seguindo https://certbot.eff.org/#centosrhel7 -nginx
Você pode tentar atualizar suas versões de solicitações e seis conforme mencionado em # 4886 - Acho que é o mesmo problema. @erikrose é uma situação em que precisamos enviar algo upstream para centOS ou RHEL?
Ele parece já ter a versão mais recente de solicitações, e seis já está lá, então é uma situação diferente de # 4884.
No CentOS 7, a única maneira de obter o urllib3 (1.22) é usando pip install. A versão do yum com epel é muito antiga: python-urllib3.noarch 0: 1.10.2-3.el7 e dispara um erro de versão errada. Mas, depois de instalar o certbot-apache com urllib3 v.1.22 no lugar, você obtém isso ao executar certbot --apache :
ImportError: No module named 'requests.packages.urllib3'
Acho que tenho todos os pacotes mais recentes disponíveis:
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)
Atualizar. Parece que isso corrigiu ...
pip install requests urllib3 pyOpenSSL --force --upgrade
Mas você consegue isso ao executar certbot --apache :
AttributeError: 'module' object has no attribute 'rand'
Vendo o mesmo problema em uma nova instalação do centos 7.3. Também tentei instalar python2-certbot
, obtendo o mesmo erro de @wardmundy . Estava tentando executar certbot-2 --standalone
.
Tentei instalar uma versão mais antiga, 0.14.0, e recebi o mesmo erro. Desci a rota manual, funcionou, tirei meu certificado com sucesso.
@wardmundy e @akosveres, o problema rand foi corrigido em https://github.com/certbot/certbot/commit/7f5f6471fea939c70294c2f31875d90320482861
e será lançado em breve em uma versão de correção de bug com número de versão 0.18.2
Isso foi causado porque o openssl suspendeu seu suporte ao rand antes do previsto, conforme discutido aqui: https://github.com/certbot/certbot/pull/5112#issuecomment -331046450
As pessoas ainda estão tendo problemas com o urllib3?
Tentei instalar o certbot no Centos 7 hoje. Eu sigo este https://certbot.eff.org/#centosrhel7 -outro passo a passo.
quando tento executar sudo certbot certonly
ele me diz que o urllib3 não foi encontrado
depois de executar pip install requests urllib3 pyOpenSSL --upgrade
a mensagem de erro muda para
ImportError: módulo 'pyOpenSSL' sem a funcionalidade necessária. Tente atualizar para v0.14 ou mais recente.
Recebi o mesmo erro como @DeronLee .
Alguma coisa nova?
@jcguevara finalmente descobri que a melhor maneira é usar o docker
Pelo menos em alguns desses casos, suspeito de ambientes Python corrompidos onde os pacotes foram pip
instalados, substituindo as versões dos pacotes fornecidos pelo seu sistema operacional. Recomendamos fortemente que você não faça isso.
Se você já se encontrou nesta posição, recomendo que use o certbot-auto, que tem uma dependência mínima dos pacotes Python encontrados em seu sistema.
@DeronLee obrigado pelo seu conselho.
Acabei de resolver o problema baixando-o diretamente do GitHub e executando certbot-auto conforme recomendado por @bmw .
@jcguevara Obrigado. Eu vou tentar mais tarde.
cerbot-auto funciona surpreendentemente! por que existem tantas ferramentas extras para fazer isso? (ˇˍˇ)
mac osx
+ Python2.7.13
openssl
.0.9.8zh 14 Jan 2016
.brew install openssl
, a versão atual é stable 1.0.2l
.brew install [email protected]
, esta versão causará No Module Found Urllib3
problema.
brew uninstall [email protected]
# openssl: stable 1.0.2l
brew install openssl
Urllib3
foi corrigido.Depois de executar este comando
pip install requests urllib3 pyOpenSSL --force --upgrade
Como @DeronLee disse:
a mensagem de erro muda para
ImportError: módulo 'pyOpenSSL' sem a funcionalidade necessária. Tente atualizar para v0.14 ou mais recente.
Eu instalei o pyOpenSSL versão 16.2.0 e funcionou para mim.
pip install pyOpenSSL==16.2.0
Obrigado. Tento instalar a versão mais recente, mas não funciona. Talvez eu
deveria tentar a versão especial
Em 11 de novembro de 2017, 1h04, "Nguyễn Thanh Tiến" [email protected]
escrevi:
Depois de executar este comando
pedidos de instalação pip urllib3 pyOpenSSL --force --upgradeComo @DeronLee https://github.com/deronlee disse:
a mensagem de erro muda para
ImportError: módulo 'pyOpenSSL' sem a funcionalidade necessária. Experimentar
atualizando para v0.14 ou mais recente.Eu instalei o pyOpenSSL versão 16.2.0 e funcionou para mim.
pip install pyOpenSSL == 16.2.0-
Você está recebendo isso porque foi mencionado.
Responda a este e-mail diretamente, visualize-o no GitHub
https://github.com/certbot/certbot/issues/5104#issuecomment-343529478 ,
ou silenciar o tópico
https://github.com/notifications/unsubscribe-auth/ALj8rHCKhYhwrgCEfvzwVaveagxIVMmtks5s1IIBgaJpZM4PUFnt
.
@ thanhtien522
Obrigado. Tento instalar a versão mais recente, mas não funciona. Talvez eu deva tentar a versão especial
@DeronLee você pode me dizer:
pip freeze
?@SwartzCr Tenho o mesmo problema com @DeronLee
Então eu executo o comando
pip install requests urllib3 pyOpenSSL --force --upgrade
e recebo um erro como este:
ImportError: 'pyOpenSSL' module missing required functionality. Try upgrading to v0.14 or newer.
Então tentei o que @ thanhtien522 mencionou correr
pip install pyOpenSSL==16.2.0
Mas ainda não funciona para mim, ainda recebo o mesmo erro que diz que pyOpenSSL
está faltando.
PRETTY_NAME="CentOS Linux 7 (Core)"
certbot.noarch 0.19.0-1.el7 @epel
yum install certbot-nginx
pip freeze
é mostrada abaixoacme==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, acima de tudo, precisamos alterar a versão do pyOpenSSL da qual dependemos para o certbot em centos. Aqui está o que obtenho em uma nova instalação:
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
Onde provavelmente deveria haver uma versão acima de 0,14
O que pode significar que alguém precisa empacotá-lo para centos - @bmw é @hogarthj a pessoa que devo contatar sobre isso?
Sim, hogarthj é nosso contato de empacotamento do Red Hat / Fedora, mas responde melhor por e-mail. Estou feliz em apresentá-lo algum dia, mas não acho que haja qualquer mudança necessária em sua extremidade aqui.
CentOS 7 é uma das nossas plataformas mais populares e testamos regularmente no CentOS 7 sem problemas. A maioria das pessoas neste tópico relata ter solicitações 2.18.x. Os pedidos 2.6.0 estão incluídos nos repos do CentOS 7. Se você misturar pacotes Python do seu sistema operacional e pip
, você vai se divertir.
Pessoas no CentOS 7 com esse problema podem contornar o problema desfazendo as alterações em seus pacotes Python feitas por meio de pip
ou usando certbot-auto que resolve o problema por não depender dos pacotes Python instalados em seu sistema .
Segui essas instruções (minha versão do urllib3 não funcionou tão bem) e então o certbot pôde ser executado ... Espero que ajude.
Tenho certeza que eles podem ser reduzidos em menos comandos ...
pedidos de desinstalação pip
pip desinstalação urllib3
yum remove python-urllib3
yum remove python-requests
yum install python-urllib3
yum install python-requests
yum install certbot
Tentei, use esses comandos e 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 mais tarde no futuro, depois de usar o yum?
@sreezree, você não deve usar o pip para instalar pacotes relacionados ao certbot, pois eles entrarão em conflito com aqueles que o certbot instala
Nenhum dos métodos mencionados acima funciona para mim, a mensagem de erro permanece a mesma. ImportError: No module named 'requests.packages.urllib3'
Encontro o mesmo erro no CentOS 7.4:
ImportError: Nenhum módulo chamado 'request.packages.urllib3'
e tentei a solução sugerida por smalenfant. Funciona lindamente.
Eu tenho o mesmo erro.
Descobri que há um erro ao instalar o 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 eu tento reinstalá-lo, então tenho o mesmo erro
# 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!
falhou, mas o show final Complete!
, como é que Complete!
?
então eu encontrei tianchao amigos disseram que está em conflito com a versão pip
https://blog.csdn.net/u013614281/article/details/76832818
e eu desinstalo a versão pip e instalo a versão yum
pip uninstall urllib3
yum install python-urllib3
depois disso eu tive outro erro
pkg_resources.DistributionNotFound: The 'urllib3<1.23,>=1.21.1' distribution was not found and is required by requests
então, que porra, estou chorando 😭
depois disso tentei
pip uninstall requests
yum remove python-requests
yum install python-requests
yum install certbot
e funciona .....
então eu acho que a versão do request não corresponde ao urllib3
então tentei em outra mesma máquina env
primeiro remova os pedidos e urllib3
pip uninstall requests
pip uninstall urllib3
yum remove python-urllib3
yum remove python-requests
instalar certbot
está ok
Na verdade, esse erro foi impresso devido a uma falha no try..catch no código interno de solicitações do Python:
try:
import urllib3
except:
import requests.packages.urllib3
Esse problema ocorre quando o urllib3 não pode ser encontrado, mas também quando o urllib3 não pode ser carregado por algum motivo.
Você pode remover o cerbot antigo e, em seguida, tentar instalá-lo via pip. que deve funcionar.
sudo pip install certbot
Tentei, use esses comandos e 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
Ótimo, problema resolvido!
Recomenda-se a instalação por
Para esclarecer, o método de instalação recomendado em sistemas baseados em RHEL 7 é usar EPEL .
Os problemas neste tópico são geralmente causados por uma instalação interrompida do Python causada por pacotes instalados de pip
conflito com os instalados de yum
. Remover os pacotes que você instalou por meio de pip
deve resolver o problema.
Comentários muito úteis
Atualizar. Parece que isso corrigiu ...
pip install requests urllib3 pyOpenSSL --force --upgrade