通过Python启动新终端来安装软件包

通过Python启动新终端来安装软件包,python,linux,sudo,Python,Linux,Sudo,我正在编写一个操作系统安全评级工具,它是一个GUI软件,可以检查重要安全组件的可用性,并允许用户通过一个“安装按钮”安装缺少的组件(例如ID) 我正在使用Pycharm作为我的IDE。我想通过GUI安装缺少的软件组件,我正在使用以下代码: os.system(“sudo-apt-get-install-snort-mysql”) 当用户单击“安装”(通过我创建的GUI)时,上面的代码将被执行,他将能够一如既往地继续安装 但是,由于我使用的是IDE,当单击“安装”按钮时,问题是我无法输入密码,因为

我正在编写一个操作系统安全评级工具,它是一个GUI软件,可以检查重要安全组件的可用性,并允许用户通过一个“安装按钮”安装缺少的组件(例如ID)

我正在使用Pycharm作为我的IDE。我想通过GUI安装缺少的软件组件,我正在使用以下代码:

os.system(“sudo-apt-get-install-snort-mysql”)

当用户单击“安装”(通过我创建的GUI)时,上面的代码将被执行,他将能够一如既往地继续安装

但是,由于我使用的是IDE,当单击“安装”按钮时,问题是我无法输入密码,因为我在IDE的跟踪中得到以下信息:

sudo:不存在tty,也没有指定askpass程序

抱歉,请重试。

我尝试使用gksudo并设法输入密码。但当安装开始时,我得到以下信息:

此操作后,将使用18.3 MB的额外磁盘空间。

是否要继续[Y/n]?中止。

强制y的gksudo导致
gksudo:无效选项--“y”


我想知道是否有一种方法可以启动一个单独的终端并从那里开始安装。

您可以使用gksudo并将-y选项传递给apt get install而不是gksudo,即

os.system('sudo "apt-get install snort-mysql"')

您还可以将subprocess.Popen与管道一起使用,以允许您与子流程交互。

这就是您的意思吗?“gksudo apt get install-y snort-mysql”我仍然收到相同的错误。请给出一个例子:
gksudo“apt-get-y snort-mysql”
你的意思是:os.system(“gksudo”“apt-get-y snort-mysql”)我有点困惑。
os.system("sudo \"apt-get install snort-mysql\"")