0
点赞
收藏
分享

微信扫一扫

sudo 使用 python 出现 No module named

原因1:没安装包

首先先要排除没安装包的情况。方法是运行安装命令,安装的话会检测到已安装。

pip install <包名>

原因2:root的查找路径缺失

如果不是没安装的话,原因就是该python包所在路径不在root用户的python查找路径里。解决方法如下

1. 找到包所在路径

这里以keyboard包为例。请把代码中的keyboard换为你的目标包名。

python
>>> import keyboard
>>> print(keyboard)
<module 'keyboard' from '/home/pi/.local/lib/python3.9/site-packages/keyboard/__init__.py'>

那么,/home/pi/.local/lib/python3.9/site-packages/就是包的所在路径了。

2. 找到root用户的查找路径

sudo python
>>> import sys
>>> sys.path
['', '/usr/lib/python39.zip', '/usr/lib/python3.9', '/usr/lib/python3.9/lib-dynload', '/usr/local/lib/python3.9/dist-packages', '/usr/lib/python3/dist-packages', '/usr/lib/python3.9/dist-packages']

3. 扩充查找路径

在第二步打印出的目录中,任选一个(这里以/usr/lib/python3/dist-packages为例)。

进入所选的目录

cd /usr/lib/python3/dist-packages

创建一个.pth结尾的文件,名字任意(以pi-keyboard.pth为例)

vim pi-keyboard.pth

在文件中添加包的路径(这里以keyboard包为例)

/home/pi/.local/lib/python3.9/site-packages/

保存退出

4. 测试是否成功

再次在sudo用户下进入python打印查找路径,发现我们添加的路径成功出现(这里是/home/pi/.local/lib/python3.9/site-packages

sudo python
>>> import sys
>>> sys.path
['', '/usr/lib/python39.zip', '/usr/lib/python3.9', '/usr/lib/python3.9/lib-dynload', '/usr/local/lib/python3.9/dist-packages', '/usr/lib/python3/dist-packages', '/home/pi/.local/lib/python3.9/site-packages', '/usr/lib/python3.9/dist-packages']

现在再次import包就不会出现问题了。

参考链接

sudo时找不到模块ModuleNotFoundError: No module named - CSDN

举报

相关推荐

0 条评论