悲しいことに、私は何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ショートカットを使用することもできます。