状況
subprocessモジュールを使ってexeファイルを開くプログラムをWindowsで使っていた.
これをubuntuでも実行したい.
しかしubuntuはexeファイルに対応していない.
やり方
Ubuntuでexeを扱えるようにするwineというものがある。
以下のようにwineコマンドを使えば、
wine {フルパスまたは相対パス}/hoge.exe
でexeファイルを実行できる。
このコマンドをsubprocess.runで実行させればよい。
wineのインストール
Ubuntu 22.04.2 LTSにWineをインストールする手順【初心者向け】
を見てほしい.
サンプルコード
test_exe.py
import subprocess
def run_exe_with_wine(exe_path):
"""
wineを使って.exeファイルを実行する
"""
try:
# wineで.exeを実行
result = subprocess.run(['wine', exe_path], check=True, text=True, capture_output=True)
print("Output:", result.stdout)
except subprocess.CalledProcessError as e:
print("Error:", e.stderr)
except FileNotFoundError:
print("wineがインストールされているか確認してください。")
if __name__ == "__main__":
# 実行したい.exeファイルのフルパス
exe_file = "/path/to/your/program.exe"
run_exe_with_wine(exe_file)
subprocess.runの引数
- check=True: 実行が失敗した場合に例外を発生
- text=True: 標準出力とエラー出力を文字列として扱う
- capture_output=True: 標準出力とエラー出力をキャプチャする
まとめ
wineを使ってexeを実行できることは知っていたが,subprocess経由でも簡単にできてうれしい.