"没有名为email.utils"用gui2exe在smtplib中

时间:2013-04-29 17:08:03

标签: python email python-2.7 gmail smtplib

我有一个很好的简单脚本,可以将电子邮件发送到gmail地址。非常简单,运行后可以从Python IDLE中正常工作。

使用GUI2Exe(使用py2exe和cx_freeze)将其设为exe后,我收到此错误:

Traceback (most recent call last):
  File "something.py", line 4, in <module>
  File "smtplib.pyc", line 46, in <module>
ImportError: No module named email.utils

它不叫做 email.py ,而且我的电脑上没有任何内容(我已阅读有关此问题的所有内容)

我也试过强迫它来自something.py和smtplib.py:

opts = {'py2exe': { "includes" : ["email.utils"] }}

完全没有区别。从IDLE运行很棒但是在gui2exe之后...错误。

我在我的Lib目录中有这个电子邮件目录,它确实包含utils。但这很明显,因为从IDLE开始,脚本运行正常。

原始剧本:

import smtplib
fromaddr = 'blablu@gmail.com'
toaddrs  = 'blipblop@gmail.com'
msg = 'There was a terrible error that occured and I wanted you to know!'

# Credentials (if needed)
username = 'blablu'
password = 'passbla'

# The actual mail send
server = smtplib.SMTP('smtp.gmail.com:587')
server.starttls()
server.login(username,password)
server.sendmail(fromaddr, toaddrs, msg)
server.quit()

我现在已经厌倦了,抱歉。我根本不知道发生了什么。

有人能告诉我我做错了什么吗?

1 个答案:

答案 0 :(得分:1)

我试图冻结你的脚本直接运行cx_Freeze,它工作得非常好。由于GUI2exe只是一个图形用户界面,我建议您也尝试直接运行cx_Freeze,因为这样可以消除GUI2exe引起的任何问题。

假设您要创建命令行应用程序,这是您需要使用上面的代码在文件旁边创建的setup.py文件(在setup.py中,我假设您的代码名为“smtpTest.py” “):

import os, sys
from cx_Freeze import setup, Executable

# Dependencies are automatically detected, but it might need fine tuning.
build_exe_options = {'packages': [],
                     'excludes': ['tkinter'],
                     'includes': []}

setup(  version = '0.1',
        description = 'sends mails',
        options = {'build_exe': build_exe_options},
        executables = [Executable('smtpTest.py', targetName="smptMailer.exe")])

然后打开命令行并转到存放文件和setup.py文件的目录并输入:

python setup.py build

在构建过程之后,您的可执行文件将位于名为“build”的新文件夹中。