我创建了一个小应用程序,用于在服务器出现问题时发送电子邮件。使用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']
尝试启动时出现错误消息:
此应用程序无法启动,因为应用程序配置不正确。重新安装应用程序可能会解决此问题。
我想到的是,它是否会遗漏一些注册表项才能让应用程序运行?
答案 0 :(得分:1)
我会说这是一个缺少DLL的问题。您应该检查并查看DLL的应用程序包(或假设存在于目标计算机上)。我认为你可以使用Visual Studio附带的depends.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版本上,而之前不会。