悲しいことに、私は何mpkg
であるかわかりませんが、2つのオプションがあります。
- それは自己実行型パッケージであり、おそらくシェルスクリプトで
.run
あり、Unixソフトウェアで時々使用される形式に似ています。この場合、Popen
の実行権限がある限り、の呼び出しは正しいですFile.mpkg
(で確認してくださいls -l /Path/to/File.mpkg
)。インストーラーは正常に実行されているはずです。
.deb
または、パッケージがプログラムで処理されるように、システムツールで処理することを目的としてdpkg
います。この場合、次のようなものが必要です。
p = subprocess.Popen(['/usr/bin/dpkg', '-i', '/Path/to/File.deb'], ...)
または、代わりに:
p = subprocess.Popen('dpkg -i /Path/to/File.deb', ..., shell=True)
さて、このPopen
オブジェクトで何をするかは、何を達成したいかによって異なります。プロセスの出力を取得したい場合は、次のPopen.communicate
ように呼び出す必要があります。
p = subprocess.Popen(
['/Path/to/File.mpkg'],
stdout=subprocess.PIPE, stderr=subprocess.PIPE,
stdin=subprocess.PIPE)
(out, err) = p.communicate()
out
これで、標準出力とerr
標準エラーが含まれます。
コマンドを呼び出して完了するまで待つだけの場合は、subprocess.call
ショートカットを使用することもできます。