如何通过Python脚本安装debian软件包?

时间:2013-02-07 08:03:23

标签: python debian

我正在尝试通过Python脚本安装Debian软件包文件。所以我使用了下面的脚本。

import os
os.system('echo %(passwd)s | sudo dpkg -i 34.deb' %locals())
运行Python脚本后,没有安装软件包。它显示了以下消息。{ {2}}当我尝试通过terminall安装软件包时,它已经正确安装。我在终端中输入的命令如下。
sudo: no tty present and no askpass program specified
如果您知道,请允许我。

2 个答案:

答案 0 :(得分:1)

似乎sudo不接受管道密码,因此请遵循文档

  

通常,如果sudo需要密码,它将从用户的终端读取它。如果指定了-A(askpass)选项,则执行(可能是图形化的)帮助程序以读取用户的密码并将密码输出到标准输出。如果设置了SUDO_ASKPASS环境变量,则它指定辅助程序的路径。                      否则,如果/etc/sudo.conf包含指定askpass程序的行,则将使用该值。例如:

                   # Path to askpass helper program
                   Path askpass /usr/X11R6/bin/ssh-askpass
     

如果没有可用的askpass程序,sudo将退出并显示错误。

你应该使用-A标志传递一个askpass程序。

编辑:似乎sudo接受来自stdin的密码,请使用-S标记。

答案 1 :(得分:1)

python也有子进程模块

import subprocess as sp
sp.call(["sudo","dpkg","-i", "some.deb"])

必须工作

您可以添加每个参数