Python 3.x 以root(sudo python3 filename.py)身份运行paho mqtt时发生导入错误

Python 3.x 以root(sudo python3 filename.py)身份运行paho mqtt时发生导入错误,python-3.x,mqtt,root,sudo,paho,Python 3.x,Mqtt,Root,Sudo,Paho,我将要为openHAB2设置一个Raspberry Pi 3+模型a作为客户端。这里我在Pi上有一个传感器,并且连接了WS2812b(别名neopix) 现在我用Python编写了(我的第一个脚本),通过paho mqtt向代理发布传感器数据(Bosch BMP280)当我用“python3 filename.py”启动Python文件时,这会根据需要工作。… 如果我想用“sudo python3 filename.py”启动同一个文件,将出现以下错误消息: Traceback (most r

我将要为
openHAB2
设置一个Raspberry Pi 3+模型a作为客户端。这里我在Pi上有一个传感器,并且连接了WS2812b(别名
neopix

现在我用Python编写了(我的第一个脚本),通过paho mqtt向代理发布传感器数据(Bosch BMP280)当我用“python3 filename.py”启动Python文件时,这会根据需要工作。…

如果我想用
“sudo python3 filename.py”
启动同一个文件,将出现以下错误消息:

 Traceback (most recent call last):
   File "mqtt_client.py", line 15, in <module>
     import paho.mqtt.client as mqtt
ModuleNotFoundError: No module named 'paho'
回溯(最近一次呼叫最后一次):
文件“mqtt_client.py”,第15行,在
将paho.mqtt.client作为mqtt导入
ModuleNotFoundError:没有名为“paho”的模块
但是,我想扩展脚本以使用WS2812b。要控制WS2812b,脚本必须以根权限启动。所以我不明白为什么paho mqtt在运行“sudo”时不再为人所知


有人能解决这个问题吗?非常感谢

当您使用
sudo python3 filename.py运行脚本时,它使用的python环境与您用于安装Paho的环境不同

要解决此问题,您可以:

  • 默认值env_keep+=“PYTHONPATH”
    添加到您的
    /etc/sudoers
  • 使用
    sudo/path/to/pythonscript.py

嘿。感谢您的快速回复。我对Pi和Python还是很陌生。。。我看到的是,在/home/pi/.local/lib和/usr/lib下都存在文件夹“python3.7”。泛美卫生组织属于前者。你是说在两种不同的Python环境中?不幸的是,我无法正确解释/path/to/python。你能更准确地表述一下吗?到目前为止,我所做的是使用sudopip3installpahomqtt安装。我现在在:/home/pi/.local/lib/Python3.7/site-packagesHi找到泛美卫生组织,很抱歉回复太晚。只需在终端中键入
哪个python3
,您就会得到所需的路径:)@ben5en没问题:)