导师的一台服务器,系统是 CentOS Linux release 7.6.1810,今天在用 firewall-cmd 查看防火墙状态时,出现了 ModuleNotFoundError 的错误:No module named ‘gi’,本文分享下出现这个错误的原因和解决办法。
一、问题描述
在 CentOS 7 上执行 firewall-cmd --state
时,返回如下错误信息:
Traceback (most recent call last): File "/usr/bin/firewall-cmd", line 24, in <module> from gi.repository import GObject ModuleNotFoundError: No module named 'gi'
二、问题原因
网上查了下,出现这个问题是,更新了系统的 Python 版本,且 version >= Python3,而 CentOS 7 系统自带的是 Python2.7,所以出现了这个错误。
可能是一个 python 代码需要 python3 的运行环境,所以有人把系统的 python 版本直接升到 3.7 了,导致现在 firewall-cmd 运行不了。
三、解决办法
解决办法也很简单,修改 /usr/bin/firewall-cmd
文件,在 python 后面添加数字 2.7 即可:
之后再执行 firewall-cmd --state
命令就正常了。