Python-Py2exe无法使用“电子邮件”模块生成.exe

Python-Py2exe无法使用“电子邮件”模块生成.exe,python,winapi,py2exe,Python,Winapi,Py2exe,py2exe不适用于标准电子邮件模块 你好。我正在尝试使用py2exe将脚本转换为exe。构建过程显示: 似乎缺少以下模块 ['email.Encoders','email.Generator','email.Iterators','email.MIMEBase','email.MIMEMultipart','email.MIMEText','email.Utils','email.base64MIME'] 可执行文件不工作。引用的模块不包括在内。我在互联网上对此进行了研究,发现py2exe在标

py2exe不适用于标准电子邮件模块

你好。我正在尝试使用py2exe将脚本转换为exe。构建过程显示:

似乎缺少以下模块

['email.Encoders','email.Generator','email.Iterators','email.MIMEBase','email.MIMEMultipart','email.MIMEText','email.Utils','email.base64MIME'] 可执行文件不工作。引用的模块不包括在内。我在互联网上对此进行了研究,发现py2exe在标准lib电子邮件模块中使用的延迟导入存在问题。不幸的是,我没有成功地找到解决这个问题的方法。有人能帮忙吗

谢谢,

附言。 脚本中的导入如下所示:

代码:全选 导入字符串、时间、系统、操作系统、smtplib 从email.MIMEMultipart导入MIMEMultipart 从email.MIMEBase导入MIMEBase 从email.MIMEText导入MIMEText
从电子邮件导入编码器来看,这个问题似乎也是同样的问题


这里给出的答案是在py2exe的命令行中显式地包含模块。

如果您不必使用py2exe,bbfreeze工作得更好,我已经在电子邮件模块中尝试过了

使用包含选项。请参阅:

您使用的是什么版本的Python?如果您使用的是2.5或2.6,那么您应该执行以下导入操作:

import string,time,sys,os,smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.base import MIMEBase
from email.mime.text import MIMEText
from email import Encoders
我非常确定,如果您正确使用电子邮件包,即在Python2.5+中使用上述名称,或者在Python2.4-中使用旧名称,py2exe的modulefinder可以正确找到该电子邮件包。当然,SpamBayes安装脚本不需要显式地包含电子邮件包,而且它包含电子邮件模块,没有问题


其他答案是正确的,如果您确实需要特别包括一个模块,您可以通过命令行使用包含选项,或者在调用setup时将其传入。

将我的应用程序从py24移植到PY26时,我也遇到了同样的问题

读后 如果最终发现以下解决方案:

在my application.py中: 在setup.py中: 为了让py2exe在运行时处理加载的包,最主要的事情似乎是您在应用程序的某个地方显式导入应用程序所需的模块。 然后在setup.py和moudlefinder.AddPackagePath中给出py2exe提示,在哪里搜索std.introspection无法找到的模块。 在应用程序中,这可以解决我的问题: 在setup.py中编辑

includes = ["email"]

请试试这个。这适用于我的py2exe构建。只需用主脚本替换project_name.py。额外的_-include是需要包含在构建类电子邮件包中的包。我认为这也适用于你

from distutils.core import setup
    import py2exe, sys, os

    sys.argv.append('py2exe')

    EXTRA_INCLUDES = [
        "email.iterators", "email.generator", "email.utils", "email.base64mime", "email", "email.mime",
        "email.mime.multipart", "email.mime.text", "email.mime.base",
        "lxml.etree", "lxml._elementpath", "gzip"
    ]

    setup(
        options = {'py2exe': {'bundle_files': 1, 'compressed': True, 'includes': EXTRA_INCLUDES,
                    'dll_excludes': ['w9xpopen.exe','MSVCR71.dll']}},
        console = [{'script': "project_name.py"}],
        zipfile = None,
    )

我通过在setup.py中显式包含缺少的模块使其正常工作:

setup(console = ['main.py'])
setup(console = ['main.py'], 
      options={"py2exe":{"includes":["email.mime.multipart","email.mime.text"]}})
旧setup.py:

setup(console = ['main.py'])
setup(console = ['main.py'], 
      options={"py2exe":{"includes":["email.mime.multipart","email.mime.text"]}})
新建setup.py:

setup(console = ['main.py'])
setup(console = ['main.py'], 
      options={"py2exe":{"includes":["email.mime.multipart","email.mime.text"]}})

为链接干杯-我以前一直在使用py2exe,但必须尝试一下!我试过了,错误减少了,但仍然输出:以下模块似乎丢失了['email.Encoders','email.Generator','email.Iterators','email.MIMEBase','email.MIMEMultipart','email.MIMEText','email.Utils','email.base64MIME']。bb冻结更易于设置和开箱即用。从email.Utils导入formatdate添加的替代选项是什么。我在创建exe时遇到了这个问题。缺少模块email.UtilsWorks对我来说,这是一种解脱,因为我从来没有得到bb冻结工作。