1. ホーム
  2. python

[解決済み] Pythonスクリプトを内部から再起動する

2022-01-27 17:30:14

質問

私は、いくつかのモジュールをロードするpythonベースのGTKアプリケーションを持っています。これは、次のように(Linux)ターミナルから実行されます。

./myscript.py --some-flag setting

プログラムの中から、ユーザーは新しいバージョンを(Gitを使って)ダウンロードすることができます。 もしそのようなものがあれば、新しくコンパイルされた内容(依存関係やインポートを含む)でプログラムを再起動するようなボタンが表示されればいいと思います。できれば、それはまた sys.argv フラグをすべてそのままにするためです。

つまり、現在のプログラムのインスタンスを終了させ、同じ引数を使って新しいインスタンスを開始させるような、すばらしい再起動手順が見つからない/必要なのです。

できれば、WindowsとMacで動作するソリューションが望ましいのですが、必須ではありません。

どのように解決するのですか?

あなたが探しているのは os.exec*() コマンドのファミリー。

現在のプログラムを、最初に実行したときとまったく同じコマンドライン引数で再起動するには、次のようにします。

os.execv(sys.argv[0], sys.argv)