2013-02-07 83 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"]) 

必須努力

您可以將每個參數