vulhub docker-compose报错:No module named ssl_match_hostname

最后编辑时间:2019/4/5

当前docker-compose版本:1.24.0
当前kali内核:Linux kali 4.19.0-kali4-amd64 #1 SMP Debian 4.19.28-2kali1 (2019-03-18) x86_64 GNU/Linux


## 报错提示 No module named ssl_match_hostname

报错情况截图

File "/usr/local/lib/python2.7/dist-packages/docker/transport/ssladapter.py", line 23, in <module>
from backports.ssl_match_hostname import match_hostname
ImportError: No module named ssl_match_hostname

报错原因,找不到 ssl_match_hostname

网上的解决办法是:pip install --upgrade backports.ssl_match_hostname
实际上并没有用,会提示该模块已经安装在/usr/local/lib/python2.7/dist-packages

root@kali~:#pip2 install --upgrade backports.ssl_match_hostname
Requirement already up-to-date:
backports.ssl_match_hostname in /usr/local/lib/python2.7/dist-packages (3.7.0.1)

卸载重装docker-compose,emmmmm,也是没有用处的。

最终问题原因是:

**/usr/local/lib/python2.7/distpackages/docker/transport/ssladapter.py **
在包路径下找不到 backports包里的ssl_match_hostname模块,
既然如此,那就让脚本能找到该模块。

最终解决办法:

方法一:复制模块到包路径下【成功】。
#进入backports模块路径
cd /usr/local/lib/python2.7/dist-packages
#复制整个包到transport包路径下
cp -r backports /usr/local/lib/python2.7/dist-packages/docker/transport

方法二:理论上,python文件找包是由模块搜索路径决定的,在模块路劲里加上这个路径就能找到这个包。没有实践,,,

参考:模块搜索路径

导入模块时,解释器会搜索sys.path列表,这个列表中保存着一系列目录。
一般情况下Linux的sys.path 列表:
[’’, ‘/usr/local/lib/python2.X’,
‘/usr/local/lib/python2.X/plat-sunos5’,
‘/usr/local/lib/python2.X/lib-tk’,
‘/usr/local/lib/python2.X/lib-dynload’,
‘/usr/local/lib/python2.X/site-packages’]

同时Ubuntu安装没有这个问题,应该是内核升级导致的不可定因素。
找到原因的老铁说一下哈。

  • 6
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值