首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法使用sudo运行Python脚本

无法使用sudo运行Python脚本
EN

Stack Overflow用户
提问于 2018-05-13 11:32:06
回答 3查看 11K关注 0票数 11

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

代码语言:javascript
复制
from requests import Session
from signalr import Connection
import threading

当我试图使用sudo python myScriptName.py运行我的脚本时,会得到一个错误:

代码语言:javascript
复制
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,就会得到一个包含以下内容的列表:

代码语言:javascript
复制
signalr
signalrManager

如果我输入pip freeze,我可以看到下面列出的内容:

代码语言:javascript
复制
signalr-client==0.0.7
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-05-13 11:57:40

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

代码语言:javascript
复制
sudo -E python myScriptName.py

它伴随着自身的安全风险。所以要小心

票数 16
EN

Stack Overflow用户

发布于 2018-05-13 11:50:47

您需要检查signalr的安装位置。sudo在root可用的环境中运行程序,如果signalr不是全局安装的,它将不会被选中。尝试'sudo pip冻结‘,看看什么是可用的根环境。

票数 1
EN

Stack Overflow用户

发布于 2022-09-21 10:13:29

另一个简单的解决方案可以是通过正常安装之前安装的sudo -even安装所需的软件包,而不是试图匹配路径:

sudo pip3 install <your-required-package-name>

之后,您可以通过sudo执行脚本。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50315645

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档