sudo运行miniedit报ImportError: No module named mininet.log如何解决
Mininet运行miniedit报错解决方案
报错原因说明
- 无sudo直接运行miniedit时的
*** Mininet must run as root.报错:Mininet依赖Linux内核的网络命名空间、虚拟网卡等虚拟化接口,这类接口的操作必须持有root权限,无权限直接执行会被拦截报错。 - 加sudo运行时的
ImportError: No module named mininet.log报错:sudo执行默认会重置环境变量,你在普通用户环境下配置的Python模块搜索路径(PYTHONPATH)不会被带入root执行环境,root权限下的Python解释器无法找到用户侧安装的mininet相关模块。
可选择的解决方案
方案一:保留环境变量执行(最快生效)
执行时给sudo加上-E参数,保留当前用户的所有环境变量,包括Python模块搜索路径:
sudo -E python3 miniedit.py
如果你的mininet是基于Python2安装的,将命令中的python3替换为python即可。
方案二:临时指定Python模块路径
首先在普通用户权限下执行如下命令,获取mininet的安装路径:
pip3 show mininet | grep Location
命令会返回类似Location: /home/yourname/.local/lib/python3.10/site-packages的结果,复制该路径后执行如下命令启动miniedit:
sudo PYTHONPATH=你复制的安装路径 python3 miniedit.py
方案三:全局安装mininet(永久解决)
如果之前你是仅给当前用户安装的mininet,执行如下命令给root用户也全局安装mininet模块,后续直接用sudo启动即可:
sudo pip3 install mininet
安装完成后直接执行sudo miniedit.py即可正常启动。
内容的提问来源于stack exchange,提问作者Muhammad Junaid Khalid
相关产品推荐
相关产品推荐

