2013-02-07 84 views
0

我试图通过Python脚本来安装Debian软件包文件。所以我使用了下面的脚本。 如何通过Python脚本安装debian软件包?

import os
os.system('echo %(passwd)s | sudo dpkg -i 34.deb' %locals())
运行Python脚本后,程序包未安装。它显示以下消息。
sudo: no tty present and no askpass program specified
当我尝试通过终端安装包时,它已被正确安装。我在终端给出的命令如下。
sudo dpkg -i 34.deb
如果你知道,让我来。

回答

1

似乎 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程序。

编辑:似乎sudostdin接受密码,请使用-S标志。

+0

谢谢,以后须藤-S工作正常 – Viswa

1

蟒蛇也​​有子模块

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

必须努力

您可以将每个参数