Certbot: ImportError:没有名为“ requests.packages.urllib3”的模块

创建于 2017-09-12  ·  37评论  ·  资料来源: certbot/certbot

我在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)

我该怎么办?

fedora / redhat / CentOS pkging debugging

最有用的评论

更新。 这似乎已经解决了...

pip install requests urllib3 pyOpenSSL --force --upgrade

所有37条评论

您是如何安装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版本。
  • mac osx默认的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你能告诉我:

  • 您正在运行什么版本的操作系统?
  • 您安装了什么版本的Certbot?
  • 如何安装Certbot
  • 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版本: certbot.noarch 0.19.0-1.el7 @epel
  • 通过运行yum install certbot-nginx安装Certbot
  • pip 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安装的软件包应该可以解决问题。

此页面是否有帮助?
0 / 5 - 0 等级