1

をサブクラス化することにより、Windows サービスとして実行する必要がある Python スクリプトを作成しましたwin32serviceutil.ServiceFramework。スクリプト内でcx_oracleモジュールが使用されます。

サービスをデバッグ モード ( python DLOGprod.py debug) で実行すると、すべて正常に動作します。しかし、サービス ( python DLOGprod.py start) を開始しようとすると、モジュールのインポートはcx_oracle次のエラーで失敗します。

import cx_Oracle ImportError: DLL のロードに失敗しました: 指定されたモジュールが見つかりませんでした。

依存関係ウォーカーを含むファイルを確認したところ、cx_oracle.pyd2 つの欠落している dll ファイルMSVCR90.DLLIESHIMS.DLL.

私は次の設定をしています:

  • パイソン2.6.6
  • pywin32-214
  • cx_oracle_5.0.4-11g

どんな助けでも大歓迎です

マーク

4

1 に答える 1

1

私は自分の問題を解決しました。根本的な原因は、 Oracle クライアント ソフトウェアへのパスをユーザーの PATH変数に追加しただけだったことです。システム全体の PATH変数に追加してから、すべてが正常に機能しています。

この問題をトラブルシューティングするために、次の手順に従いました。

  • プロセス エクスプローラー ユーティリティをダウンロードしましたhttp://www.microsoft.com/technet/sysinternals/utilities/filemon.mspx
  • サービスsc queryex [サービス名]のPIDを決定しました
  • 探索されたプロセス内のPIDの後でフィルタリングされました
  • pythonservice.exeがOCI.dllを見つけられないことがわかりました
  • 私のシステムでOCI.dllを検索しました

この時点で、すべてが明確になりました。

マーク

于 2011-05-16T14:18:44.380 に答える