2011-04-17 56 views
0

我需要一些使用py2exe來轉換python windows服務的幫助。使用Python和py2exe的Windows服務

讓我來解釋一下這個問題。我有一個python服務,可以工作,這裏沒有問題。我用py2exe把它變成一個可執行文件。我通過用這個替換了python版本的服務來測試它,它也沒有問題。

但是,當我將服務的exe版本移動到另一臺計算機時,它將向服務管理器註冊,但不會以錯誤開始:「系統找不到指定的文件」。缺少的文件是我編寫的模塊之一。

我玩了這一點,並回到我使用py2exe和該服務的exe版本工作的機器。我刪除了一切相關的python,py2exe創建的所有東西,但「dist」文件夾,我能想到的所有東西都與python版本的服務有關。 exe文件仍然有效(即使我刪除了其他機器上應該丟失的文件)。

嘗試了一堆不同的東西,但無法獲得exe版本的工作。如果你們有任何想法,我會很感激。

P.S:我確實在目標機器上安裝了C++運行庫。沒有它就無法註冊服務,正如我所說,我可以註冊它,它不會運行。

+0

不太熟悉如何在Windows上運行,但在Linux上您可以針對二進制運行「ldd」以查看它依賴於哪些動態庫以及它們在文件系統上的位置。這將是值得檢查。事實上,我做了一個快速谷歌搜索,並發現這個Windows的:http://dependencywalker.com/ – 2011-04-17 12:36:28

回答

0

http://www.py2exe.org/index.cgi/py2exeAndWindowsServices

有一些注意事項在那裏有關模塊與Windows系統DLL衝突。他有一個問題,因爲他有一個名爲版本的模塊,並且import version導致該應用程序出錯。

您可以嘗試導入win32traceutil作爲您服務中的第一件事。這應該允許您運行win32traceutil控制檯應用程序以顯示服務的任何stdout/stderr輸出。

1

即使您將.py腳本轉換爲exe,該服務仍然使用python解釋器來運行服務代碼本身。如果你打開「服務」,並期待在服務屬性,你應該看到類似 - 路徑可執行文件: 「C:\ Python27 \ LIB \站點包\ WIN32 \ PythonService.exe」

我猜另一臺電腦沒有安裝python。 如果你想能夠運行的機器上的服務,而無需安裝Python,你需要做這樣的事情This ,或者你也可以做到這一點使用cx_freeze