10

現在、OSに応じて、aptまたはrpmを使用してパッケージをインストールする必要があります。システムを更新またはアップグレードするためのライブラリ「apt」を見ましたが、それを使用して単一のパッケージをインストールすることは可能ですか?

「サブプロセス」も使用しようとしていました:

subprocess.Popen('apt-get install -y filetoinstall', shell=True, stdin=None, stdout=None, stderr=None, executable="/bin/bash")

しかし、このコマンドはシェル内のすべてのプロセスを表示します。非表示にすることはできません。

ご協力ありがとうございました。

4

5 に答える 5

11

check_call図書館から利用できますsubprocess

from subprocess import STDOUT, check_call
import os
check_call(['apt-get', 'install', '-y', 'filetoinstall'],
     stdout=open(os.devnull,'wb'), stderr=STDOUT) 

この場合はstdoutto を/dev/nullダンプします。os.devnull

os.devnullプラットフォームに依存せず、/dev/nullPOSIX とnulWindows で返されます (使用しているので関係ありませんapt-getが、知っておくとよいでしょう :) )

于 2011-12-12T22:47:18.200 に答える
5

みんなありがとう!各ソリューションの一部を使用します。私のコード:

proc = subprocess.Popen('apt-get install -y FILE', shell=True, stdin=None, stdout=open(os.devnull,"wb"), stderr=STDOUT, executable="/bin/bash")
proc.wait()

追加: stdout と .wait

アルゼンチンからもう一度ありがとう!

于 2011-12-13T12:06:43.400 に答える
3

この特定のタスクでは、別の方法として、ビルドを自動化する Python デプロイ ツールであるFabricsubprocessの使用を検討できます。

于 2011-12-13T00:07:29.650 に答える
0

これを使用して、出力を /dev/null にリダイレクトします。

proc = subprocess.Popen('apt-get install -y filetoinstall', shell=True, stdin=None, stdout=open("/dev/null", "w"), stderr=None, executable="/bin/bash")
proc.wait()

.wait() の呼び出しは、apt-get が完了するまでブロックされます。

于 2011-12-12T22:44:00.043 に答える