5

Pythonには、win32serviceWindowsサービスの作成を可能にするように見えるパッケージがあります。利用可能なGoogleの例を注意深く確認しました。たとえば、次の例 です。WindowsでPythonスクリプトをサービスとして実行することは可能ですか?可能であれば、どのように?

~/Documents/test.py昇格したコマンドプロンプトの下にコードを配置して実行しました:

> python test.py install
> python test.py debug

残念ながら、私が試したすべての例はエラーで失敗します:

Debugging service TestService - press Ctrl+C to stop.
Error 0xC0000005 - Python could find the service class in the module

AttributeError: 'module' object has no attribute 'AppServerSvc'

(null): (null)

Windows764ビットおよびWindows864ビットで最新バージョンのActivePython(2.7.2.5 32ビット)を使用してテストしました。もちろん、サービスマネージャを介して手動でサービスを開始した場合も、サービスは開始されません。

私は何か間違ったことをしていますか、それともPythonは最新のオペレーティングシステムでのサービス作成に使用することを意図していませんか?たぶん私はwindows/python / pywin32の特定のバージョンが必要ですか?もちろん、Windows XPから始めてすべての組み合わせを手動でテストすることはできますが、かなりの時間がかかります:(。誰かがすでにPythonとWindowsサービスの経験があり、私が間違っていることを教えてくれますか?

アップデート

Windows XP 32ビット仮想マシン(同じコード、同じactivepythonディストリビューション)でテスト済み-同じエラー。

4

1 に答える 1

1

PyWin32のActiveStateビルドにバグがあるようです。ActiveState python 2.7.2.5をインストールし、上記のリンクされたサンプルコードを実行すると、報告しているのと同じエラーが発生します。

しかし、Python 2.7.3をダウンロードして(2.7.2.5はダウンロードできないようです)、PyWin32ビルド214を追加すると(ActiveStateは214バージョンのPyWin32を使用しているようです)。その後、すべてがうまく機能しているようです。また、PyWin32(218)の最新ビルドを試しましたが、正しく機能しました。

したがって、問題をActiveStateに報告してみることができると思います(私は彼らとサポート契約を結んでいません)。ActiveStateを使用する必要がない限り、標準のPythonビルドに切り替えることができます。

私は、Windows2000からServer2008およびWindows7まで、あらゆるもので問題なく実行されている標準のPythonビルドでサービスを何年も使用しています。だから私はそれがあなたにも役立つと信じる十分な理由があります。

ActiveStateを使用して問題を修正する場合、バグはLoadPythonServiceInstance関数のPythonService.cppのビルドにあるようです。作成されたレジストリエントリを確認しましたが、問題はありません。クラスの読み込みに失敗しているのはPythonService.exeです。エラーメッセージに基づいて、モジュールが正しくロードされたようで、クラスを見つけるのに問題があります。

于 2012-11-04T20:15:48.657 に答える