Pythonをサービスに変換:スクリプトをWindowsサービスとして実行
私を含む多くの人々は、タスクの自動化やサードパーティ製ユーティリティのAPI作成にPythonを活用しています。しかし残念ながら、Pythonをサービスに変換するためだけにpywin32ライブラリを導入することは理想的とは言えません。特に、pywin32が何らかの理由で自分たちが書いていないプロジェクトと競合する場合にはなおさらです。
この問題を解決する優れたユーティリティはいくつかあります:
- NSSM
- WinSW
しかし、信頼性と迅速なスクリプト展開が求められる場合、これらは使いにくいことがあります。 これらの理由から、今日は3クリックでの変換と信頼性を目指すEXE to Serviceについてご紹介します。
PythonをWindowsサービスに変換する方法
ステップ1: EXE to Serviceを開く
EXE to Serviceをインストールすると、デスクトップにショートカットが表示されます。
グラフィカルインターフェイスは、サービスの作成を簡素化することのみを目的としています。グラフィカルインターフェイスのないWindows Serverを実行している場合、2つの選択肢があります:
- 通常のPCでサービスを作成し、サーバーに転送する。
- コマンドラインを使用して、サーバー上で直接EXE to Serviceを実行する。
ステップ2: 新しいサービスを作成する
EXE to Serviceには、すでに完成されたPython to Serviceの例が含まれています。
「Create from example」ボタンをクリックするだけです。

ステップ3: Pythonスクリプトへのパスを設定する
表示されるウィンドウで、正しいパスを指定する必要があります:
- Python.exe実行ファイルへのパス:デフォルト(ユーザー固有):
C:\Users\<ユーザー名>\AppData\Local\Programs\Python\Python<バージョン>\ - 作業ディレクトリ:スクリプトファイルが配置されているフォルダを指定します。
- 引数:
C:\パス\To\Your\Script.py

ステップ4: サービスを保存して開始する
「Create Service」をクリックしてWindowsサービスを作成します。
このコンピューターでサービスをすぐに開始したい場合は、「Start」をクリックします。
これにより、Pythonは以下のようになります:
- Windowsサービスとして起動する
- システム起動時に自動的に開始する
- Windowsサービスマネージャー(
services.msc)を通じて管理可能になる
今後の記事では、PythonでメモリやCPUリークが発生した際の重要な状況に対する通知やアラートの作成方法について説明します。
結論
Pythonは元々高水準言語として開発され、Windowsサービスでの実行を意図していませんでした。しかし、EXE to Serviceのようなツールはこの問題をきれいに解決します。.pyスクリプトをシェルでラップするだけで、システム起動時に実行され、ログアウト後も持続し、services.mscと統合されます。複雑な回避策は必要ありません。