python应用程序exe文件不工作在WinSRV2003

当服务器出现问题时,我创build了一个发送电子邮件的小应用程序。 用py2exe创buildexe文件。 虽然它在Win7上绝对正常,但我在运行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输出可能很有趣

以下模块似乎缺less['_scproxy']

尝试启动时出现错误消息:

此应用程序无法启动,因为应用程序configuration不正确。 重新安装应用程序可能会解决此问题。

我想到的是,它可能会丢失一些registry键,允许应用程序运行?

对_scproxy的搜索似乎表明_scproxy是2.6中的一个新模块。 也许以某种方式涉及Python 2.5? py2exe是应该做一个完全独立的可执行文件,所以我不明白这是可能的,但。

另一种可能是_scproxy依赖于Windows 2003中不可用的dll。 你有没有试图在Win2003上运行没有py2exe的程序?

我会说这是一个缺少DLL的问题。 您应该检查并查看该DLL的应用程序包(或者假定存在于目标计算机上)。 我想你可以用Visual Studio自带的depends.exe来做到这一点。

编辑:我只记得。 确保你运行一个Python 2.5安装的py2exe。 2.6有一些错误,并使该exe不能在几台机器上工作。

谷歌搜索你的“这个应用程序没有启动…”消息强烈建议这是一个DLL问题,可能与msvcp80.dll和朋友。 在最近的Windows / Python / py2exe中,这是一个很常见的情况,就是MS如何不断更改MSVCC库等。不同的Python版本与不同的库链接,如果它们没有被预先安装在目标机器上,你可能会遇到这样的问题。 有时从MS安装适当的可再发行组件包工作。

请注意,py2exe警告,在这种情况下,关于_scproxy,几乎总是可以忽略。 得到这样的错误模块的虚假报告是非常常见的。 95%的时间我们可以忽略它们,即使我们看到几十个模块“缺失”。

我有一个COM对象涉及到类似的问题。 也许在这里也是如此。 这个描述解决了我的问题。 然后,我的软件将在不同的Windows版本上运行,而以前不会。