无法使用sudo运行Python脚本


问题内容

我有一个简单的脚本,它使用signalr-client-py作为外部模块。

from requests import Session
from signalr import Connection
import threading

当我尝试使用运行脚本时sudo python myScriptName.py,出现错误:

Traceback (most recent call last):
  File "buttonEventDetectSample.py", line 3, in <module>
    from signalrManager import *
  File "/home/pi/Desktop/GitRepo/DiatAssign/Main/signalrManager.py", line 2, in <module>
    from signalr import Connection
ImportError: No module named signalr

如果我只运行脚本键入,python myScriptName.py则可以很好地工作,但是我需要在前面加上 sudo
,因为稍后在其他脚本(使用此脚本)中,我会在文件系统上执行写操作。

我对Python很陌生,这就是为什么我需要知道如何处理这种情况的原因。如果输入,pydoc modules我将得到一个包含以下内容的列表:

signalr
signalrManager

如果输入,pip freeze我会看到列出的内容:

signalr-client==0.0.7

问题答案:

默认情况下,sudo在不同的环境中运行命令。您可以要求sudo使用-Eswitch保护环境。

sudo -E python myScriptName.py

它带有自身的安全风险。所以要小心