python app不能在WinSRV2003上运行

时间:2009-11-10 11:33:16

标签: python windows windows-server-2003 py2exe

我创建了一个小应用程序,用于在服务器出现问题时发送电子邮件。使用py2exe创建exe文件。虽然它在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输出的一行可能很有趣

  

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

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

  

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

我想到的是,它是否会遗漏一些注册表项才能让应用程序运行?

4 个答案:

答案 0 :(得分:1)

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

编辑:我记得。确保使用Python 2.5安装运行py2exe。 2.6有一些错误,这使得exe无法在多台机器上运行。

答案 1 :(得分:1)

search on _scproxy似乎表明_scproxy是2.6中的新模块。也许某种程度上涉及Python 2.5? py2exe应该是一个完全自包含的可执行文件,所以我不知道这是怎么回事。

另一种可能性是_scproxy依赖于Windows 2003中没有的dll?您是否尝试在Win2003上运行没有py2exe的程序?

答案 2 :(得分:1)

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

请注意,py2exe警告(在本例中为_scproxy)几乎总是可以忽略。如此错误地报告丢失的模块是非常常见的。 95%的时间我们可以忽略它们,即使我们看到几十个模块“丢失”。

答案 3 :(得分:1)

我遇到了涉及COM对象的类似问题。也许这就是这种情况。这description解决了我的问题。然后我的软件将运行在不同的Windows版本上,而之前不会。