【问题标题】:Import Error when running paho mqtt as root (sudo python3 filename.py)以 root 身份运行 paho mqtt 时出现导入错误(sudo python3 filename.py)
【发布时间】:2019-11-22 09:39:42
【问题描述】:

我即将设置一个 Raspberry Pi 3+ Model A 作为openHAB2 的客户端。在这里,我在 Pi 上有一个传感器,并连接了 WS2812b(别名 Neopixel)。

现在我用 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'

但是,我想扩展脚本以使用 WS2812b。要控制 WS2812b,脚本必须以 root 权限 启动。所以我不明白为什么在运行“sudo”时不再知道 paho-mqtt ...

有人对此有解决方案吗?非常感谢!

【问题讨论】:

    标签: python-3.x mqtt root sudo paho


    【解决方案1】:

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

    为了解决这个问题,您可以:

    • Defaults env_keep += "PYTHONPATH" 添加到您的/etc/sudoers
    • 使用sudo /path/to/python pythonscript.py 运行您的脚本

    【讨论】:

    • 嘿。感谢您的快速回复。我对 Pi 和 Python 还是很陌生...我所看到的是在 /home/pi/.local/lib 和 /usr/lib 下都存在文件夹“python3.7”。 Paho属于前者。你的意思是两个不同的Python环境?不幸的是,我无法正确解释 /path/to/python。你能更准确地表述一下吗?到目前为止我所做的是使用 sudo pip3 install paho-mqtt 安装的。 Paho 我现在在以下位置找到:/home/pi/.local/lib/Python3.7/site-packages
    • 您好,很抱歉回复晚了。只需在终端中输入which python3 即可获得所需的路径:)
    • @ben5en 没问题 :)
    猜你喜欢
    • 2011-09-08
    • 2021-07-15
    • 2019-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-08
    • 2022-12-03
    相关资源
    最近更新 更多