vulhub docker-compose報錯:No module named ssl_match_hostname

最後編輯時間:2019/4/5
Author by wineco / kissloo

當前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安裝沒有這個問題,應該是內核升級導致的不可定因素。
找到原因的老鐵說一下哈。

轉載請註明出處:https://blog.csdn.net/lql971203

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章