当服务器出现问题时,我创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版本上运行,而以前不会。