Cannot run Python script using sudo

こ雲淡風輕ζ 提交于 2020-06-08 11:25:15

问题


I have a simple script which is using signalr-client-py as an external module.

from requests import Session
from signalr import Connection
import threading

When I try to run my script using the sudo python myScriptName.py I get an error:

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

If I run my script typing only python myScriptName.py it works perfectly fine but I need to have the sudo in front because later on in my other scripts (that use this one) I perform write operation on the File system.

I am quite new to Python and that's why I need to know how I can handle this situation. If I type pydoc modules I get a list which contains:

signalr
signalrManager

If I type pip freeze I can see there listed:

signalr-client==0.0.7

回答1:


By default sudo runs commands in different environment. You can ask sudo to preserve environment with -E switch.

sudo -E python myScriptName.py

It comes with it's own security risks. So be careful




回答2:


You need to check where signalr is installed. sudo runs the program in the environment available to root and if signalr is not installed globally it won't be picked up. Try 'sudo pip freeze' to see what is available in the root environment.



来源:https://stackoverflow.com/questions/50315645/cannot-run-python-script-using-sudo

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!