我在centos 7.3上使用nginx,运行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'
套餐:
[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)
我该怎么办?
您是如何安装certbot的?
pip安装urllib3可能会修复它-但可能会有更简单的方法。 例如,将其打包为rpm,这可能是将其安装在centos上的首选方式: https ://www.rpmfind.net/linux/rpm2html/search.php = python-urllib3
但是令人惊讶的是,没有任何东西将其安装为依赖项。 您是否从软件包管理器安装了certbot? 您遵守这些指示了吗? https://certbot.eff.org/#centosrhel7 -nginx
@SwartzCr是的,我是按照https://certbot.eff.org/#centosrhel7 -nginx进行的
如#4886所述,您能否尝试更新您的请求版本和六个版本-我认为这是同一个问题。 @erikrose是在这种情况下,我们需要向
他似乎已经有了最新版本的请求,那里有六个请求,所以情况与#4884不同。
在CentOS 7上,获取urllib3(1.22)的唯一方法是使用pip install。 使用epel的yum版本非常老:python-urllib3.noarch 0:1.10.2-3.el7并触发错误的版本错误。 但是,在安装了urllib3 v.1.22的certbot-apache之后,运行certbot --apache时会得到以下
ImportError: No module named 'requests.packages.urllib3'
我想我已经准备好了所有最新软件包:
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)
更新。 这似乎已经解决了...
pip install requests urllib3 pyOpenSSL --force --upgrade
但是然后您在运行certbot --apache时得到了这个:
AttributeError: 'module' object has no attribute 'rand'
在全新安装的centos 7.3上看到相同的问题。 还尝试安装python2-certbot
,得到与@wardmundy相同的错误。 试图运行certbot-2 --standalone
。
我尝试安装较旧的版本0.14.0时遇到了相同的错误。 我走了一条手工路线,行得通,我成功获得了证书。
@wardmundy和@akosveres rand问题已在https://github.com/certbot/certbot/commit/7f5f6471fea939c70294c2f31875d90320482861中修复
并将很快在版本号为0.18.2的错误修正版本中发布
这是由于opensl提前淘汰了对rand的支持,如此处所述: https :
人们是否仍然遇到urllib3问题?
我今天尝试在Centos 7上安装certbot。 我按照此https://certbot.eff.org/#centosrhel7-其他逐步进行操作。
当我尝试运行sudo certbot certonly
它告诉我找不到urllib3
在我运行pip install requests urllib3 pyOpenSSL --upgrade
错误消息更改为
ImportError:“ pyOpenSSL”模块缺少必需的功能。 尝试升级到v0.14或更高版本。
我遇到了类似@DeronLee的错误。
有什么新事吗?
@jcguevara最后我发现最好的方法是使用
至少在某些情况下,我对损坏的Python环境感到怀疑,在该环境中,已经安装了pip
软件包,并且覆盖了操作系统提供的软件包版本。 我们强烈建议您不要这样做。
如果您已经处于这个位置,我建议您使用certbot-auto ,它对系统上找到的Python软件包的依赖性最小。
@DeronLee感谢您的建议。
我只是解决了它,直接从GitHub下载并按照@bmw的建议运行certbot-auto。
@jcguevara谢谢。 我稍后再试。
cerbot-auto出奇地工作! 为什么有那么多额外的工具来做到这一点? (ˇˍˇ)
mac osx
+ Python2.7.13
openssl
版本。0.9.8zh 14 Jan 2016
。brew install openssl
,当前版本是stable 1.0.2l
。brew install [email protected]
,则此版本将导致No Module Found Urllib3
问题。
brew uninstall [email protected]
# openssl: stable 1.0.2l
brew install openssl
Urllib3
问题已解决。运行此命令后pip install requests urllib3 pyOpenSSL --force --upgrade
正如@DeronLee所说:
错误消息更改为
ImportError:“ pyOpenSSL”模块缺少必需的功能。 尝试升级到v0.14或更高版本。
我安装了pyOpenSSL版本16.2.0,它对我有用。
pip install pyOpenSSL==16.2.0
谢谢。 我尝试安装最新版本,但无法正常工作。 也许我
应该尝试特殊版本
2017年11月11日,上午1:04,“NguyễnThanhTiến” [email protected]
写道:
运行此命令后
pip安装请求urllib3 pyOpenSSL --force --upgrade正如@DeronLee https://github.com/deronlee所说:
错误消息更改为
ImportError:“ pyOpenSSL”模块缺少必需的功能。 尝试
升级到v0.14或更高版本。我安装了pyOpenSSL版本16.2.0,它对我有用。
点安装pyOpenSSL == 16.2.0-
您收到此邮件是因为有人提到您。
直接回复此电子邮件,在GitHub上查看
https://github.com/certbot/certbot/issues/5104#issuecomment-343529478 ,
或使线程静音
https://github.com/notifications/unsubscribe-auth/ALj8rHCKhYhwrgCEfvzwVaveagxIVMmtks5s1IIBgaJpZM4PUFnt
。
@ thanhtien522
谢谢。 我尝试安装最新版本,但无法正常工作。 也许我应该尝试特殊版本
@DeronLee你能告诉我:
pip freeze
的输出?@SwartzCr我与@DeronLee有相同的问题
所以我运行命令pip install requests urllib3 pyOpenSSL --force --upgrade
我得到了这样的错误:
ImportError: 'pyOpenSSL' module missing required functionality. Try upgrading to v0.14 or newer.
然后我尝试了@ thanhtien522提到的跑步pip install pyOpenSSL==16.2.0
但是它仍然对我不起作用,我仍然遇到相同的错误,告诉我缺少pyOpenSSL
。
PRETTY_NAME="CentOS Linux 7 (Core)"
certbot.noarch 0.19.0-1.el7 @epel
yum install certbot-nginx
安装Certbotpip freeze
的输出如下所示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
看起来最重要的是,我们需要在centos中增加对certbot依赖的pyOpenSSL版本,这是我全新安装的内容:
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
可能应该是0.14以上的版本
这可能意味着有人需要将其打包为centos-@bmw是@hogarthj,是我应该
是的,hogarthj是我们的Red Hat / Fedora包装联系人,但通过电子邮件响应更快。 很高兴为您介绍一些时间,但是我认为他在这方面不需要任何改变。
CentOS 7是我们最受欢迎的平台之一,我们会定期在CentOS 7上进行测试而不会出现问题。 此线程中的大多数人都报告有请求2.18.x。 请求2.6.0包含在CentOS 7存储库中。 如果您将操作系统中的Python程序包和pip
,则会遇到麻烦。
在CentOS 7上遇到此问题的人可以通过撤消通过pip
对Python软件包所做的更改或使用certbot-auto来解决此问题,而
我按照以下说明进行操作(我的urllib3版本无法正常运行),然后可以执行certbot ...希望对您有所帮助。
我确信这些可以折叠成更少的命令...
pip卸载请求
pip卸载urllib3
百胜删除python-urllib3
百胜删除python请求
百胜安装python-urllib3
百胜安装python-requests
百胜安装certbot
我已经尝试过,使用这些命令,就可以了!
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
使用yum后,我们以后可以使用点子吗?
@sreezree,您不应使用pip安装与certbot相关的软件包,因为它们将与certbot安装的软件包冲突
上面提到的那些方法都不适合我,错误消息保持不变。 ImportError: No module named 'requests.packages.urllib3'
我在CentOS 7.4上遇到了相同的错误:
ImportError:没有名为“ requests.packages.urllib3”的模块
并尝试了smalenfant的建议解决方案。 做工精美。
我有同样的错误。
我发现安装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
我尝试重新安装它,然后出现相同的错误
# 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!
它失败了,但最终显示Complete!
,如何显示Complete!
?
所以我找到了天超的朋友说这和pip版本有冲突
https://blog.csdn.net/u013614281/article/details/76832818
我卸载了pip版本和安装的yum版本
pip uninstall urllib3
yum install python-urllib3
之后,我又遇到了另一个错误
pkg_resources.DistributionNotFound: The 'urllib3<1.23,>=1.21.1' distribution was not found and is required by requests
所以,他妈的,我在哭😭
经过尝试
pip uninstall requests
yum remove python-requests
yum install python-requests
yum install certbot
它的工作原理.....
所以我认为请求版本与urllib3不匹配
所以它在另一个环境机器中尝试过
首先删除请求和urllib3
pip uninstall requests
pip uninstall urllib3
yum remove python-urllib3
yum remove python-requests
安装certbot
好的
由于try..catch在请求的内部python代码中失败,因此实际上会打印此错误:
try:
import urllib3
except:
import requests.packages.urllib3
当找不到urllib3时,也会发生此问题,但是无论出于何种原因都无法加载urllib3时,也会发生此问题。
您可以删除旧的cerbot,然后尝试通过pip安装它。 这应该工作。
sudo pip install certbot
我已经尝试过,使用这些命令,就可以了!
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
太好了,问题解决了!
建议使用certbot-auto脚本安装,没有此问题。
为了明确起见,在基于RHEL 7的系统上推荐的安装方法是使用EPEL 。
此线程中的问题通常是由pip
安装的软件包与yum
安装的软件包冲突导致的Python安装中断引起的。 删除通过pip
安装的软件包应该可以解决问题。
最有用的评论
更新。 这似乎已经解决了...
pip install requests urllib3 pyOpenSSL --force --upgrade