2009-11-10 40 views
2

我創建了一個小應用程序,用於在服務器出現問題時發送電子郵件。用py2exe創建exe文件。雖然它在Win7上絕對正常,但我在運行WinSRV2003時遇到了問題。我不相信它與代碼本身有關。 請參考下面python應用程序無法在WinSRV2003上運行

import pyodbc, sys, smtplib, os 
from datetime import date 
from email.mime.multipart import MIMEMultipart 
from email.mime.text import MIMEText 
from email.mime.base import MIMEBase 
import email.iterators 
import email.generator 

setup.py文件導入:

from distutils.core import setup 
import py2exe 
import modulefinder 

modulefinder.AddPackagePath("mail.mime", "base") 
modulefinder.AddPackagePath("mail.mime", "multipart") 
modulefinder.AddPackagePath("mail.mime", "nonmultipart") 
modulefinder.AddPackagePath("mail.mime", "audio") 
modulefinder.AddPackagePath("mail.mime", "image") 
modulefinder.AddPackagePath("mail.mime", "message") 
modulefinder.AddPackagePath("mail.mime", "application") 

setup(console=['capfile_tester.py'], 
    options = { "py2exe": { "includes": "decimal, datetime, email" } }) 

而且從py2exe輸出也是一條線,可能是有趣的

以下模塊似乎缺少 [ '_scproxy']

嘗試啓動時出現錯誤消息:

此應用程序啓動失敗,因爲應用程序配置不正確。重新安裝該應用程序可能會解決此問題。

我想到的是,它可能會丟失一些註冊表項,允許應用程序運行?

+0

你解決了嗎? – Geo 2009-11-18 11:16:36

+0

沒有看到您的評論,我現在就試試。 – MichalKlich 2009-11-20 14:29:09

回答

1

我想說這是一個缺少DLL的問題。您應該檢查並查看DLL的應用程序捆綁包(或假定存在於目標計算機上)。我想你可以用Visual Studio附帶的depends.exe來做到這一點。

編輯:我只記得。確保你使用Python 2.5安裝運行py2exe。 2.6有一些bug,這使得EXE不能在幾臺機器上工作。

+0

不錯的提示,我認爲它可能有一些與架構有關,但是當我在虛擬XP 32位上創建EXE它仍然不會在服務器2003上工作。 我仍然需要檢查DLL的依賴關係。 – MichalKlich 2009-11-12 11:18:00

+0

我遇到了同樣的問題。我編寫了一個使用PIL的腳本,在幾臺機器上它不起作用。原來是因爲DLL問題。另外,確保你使用python 2.5而不是python 2.6進行編譯。這很重要 ! – Geo 2009-11-12 11:35:21

1

A search on _scproxy似乎表明_scproxy是2.6中的一個新模塊。也許不知何故Python 2.5參與? py2exe應該是一個完全自包含的可執行文件,所以我不明白這是可能的。

另一種可能性是_scproxy依賴於在Windows 2003中不可用的dll?你有沒有試圖在Win2003上運行沒有py2exe的程序?

+0

不幸的是,他們可能不讓我在服務器上安裝python,但我會問。謝謝。 – MichalKlich 2009-11-12 11:18:54

1

使用谷歌搜索你的「這個應用程序未能開始......」消息強烈建議這是一個DLL問題,可能與msvcp80.dll和朋友。對於MS如何不斷更改MSVCC庫等,最近的Windows/Python/py2exe是一個很常見的情況。不同的Python版本與不同的庫鏈接,如果它們未預先安裝在目標機器上,您可能會遇到類似問題。有時從MS安裝適當的可再發行組件包。

請注意,在這種情況下,關於_scproxy的py2exe警告幾乎總是可以忽略。獲得那些虛假模塊的虛假報告的數量非常普遍。 95%的時間我們可以忽略它們,即使我們看到幾十個模塊「缺失」。

1

我有一個涉及COM對象的類似問題。也許這也是這種情況。這description解決了我的問題。然後,我的軟件將運行在不同的Windows版本上,而之前不會。