原因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