firewalld修复 ModuleNotFoundError: No module named ‘six’

2018年7月9日 0 作者 筱枫

威而鋼
最近在用fedora28,在其中安装了各种包,后来发现运行firewall-cmd便出现这个问题,同时防火墙也无法启动
但是用pip3 install six的时候却又提示已经安装过,顿感奇怪
后来仔细想想看,使用

locate six.py

,便得到如下结果

当中可以很明显的看到six.py已经安装,同时手动运行python3,在其中引入six这个包,没有任何问题,初步估计是环境变量的问题
因为firewall-cmd本质上就是一个python脚本,所以直接用vim打开这个文件

可以很明显的看到开头python3 -Es,使用python3 –help查询了下这两个参数的含义,可以确定是环境变量的问题,因为-E这个参数就是表明忽略python的环境变量,只使用默认的变量,为了验证这一点
使用python3 /usr/bin/firewall-cmd 执行,没有出现任何问题,接下来就是修复这个问题了,可以很简单的将-E参数去掉,但总感觉不妥,于是决定直接将six.py放入默认的路径中,接着再次运行,问题解决。

cp /usr/local/lib/python3.6/site-packages/six.py /usr/lib/python3.6/site-packages/

那么,six.py这个文件是做什么的呢?网上搜索了一下,是python2与python3的一个兼容模块,为了能让代码同时运行在python2与python3上,这个模块是必不可少的

可以点击这里了解详情:https://www.kawabangga.com/posts/2360