Невозможно запустить скрипт Python с использованием sudo - PullRequest
0 голосов
/ 13 мая 2018

У меня есть простой скрипт, который использует 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

Ответы [ 2 ]

0 голосов
/ 13 мая 2018

По умолчанию sudo запускает команды в другой среде.Вы можете попросить sudo защитить окружающую среду с помощью переключателя -E.

sudo -E python myScriptName.py

Это связано с его собственными угрозами безопасности.Так что будьте осторожны

0 голосов
/ 13 мая 2018

Вам необходимо проверить, где установлен сигнализатор. sudo запускает программу в среде, доступной для root, и, если сигнализатор не установлен глобально, он не будет активирован. Попробуйте sudo pip freeze, чтобы увидеть, что доступно в корневой среде.

...