py2exe打包py文件出现错误,有人知道怎么回事吗?

houxuanfelix 2009-02-04 02:06:47
我做了一个发送邮件的python小程序,单独执行是成功的
把它编译成exe时,出现了如下错误
...
The following modules appear to be missing
['email.Generator', 'email.Iterators', 'email.MIMEBas
'email.MIMEText', 'email.Utils', 'email.base64MIME']
....

我的setup文件是这样写的:
# mysetup.py
from distutils.core import setup
import py2exe

setup(console=["result.py"])

result.py是文件名,在网上搜索了下也没看到好的解决办法,望高手帮忙解决下
...全文
839 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
houxuanfelix 2009-02-05
  • 打赏
  • 举报
回复
谢谢了,已经解决了
dist目录里生成的library.zip中有email目录,但是并不完全,会丢失一些文件,但我并不明白为什么会丢失这些文件,拷贝进去就OK了
houxuanfelix 2009-02-04
  • 打赏
  • 举报
回复
dist目录中的library.zip目录中有emial目录
我在result.py中引用了如下库
import smtplib
import email
from email.MIMEBase import MIMEBase
from email.MIMEText import MIMEText
from email.MIMEMultipart import MIMEMultipart

如果仅仅引用
import smtplib
import email
是可以的,但是我发送邮件需要加附件,所以必须引用
from email.MIMEBase import MIMEBase
from email.MIMEText import MIMEText
from email.MIMEMultipart import MIMEMultipart

但是引用这些又会出现问题
DDGG 2009-02-04
  • 打赏
  • 举报
回复
我按你写的试了不能生成exe,必须这样写才行:

# mysetup.py 
from distutils.core import setup
import py2exe
import sys

sys.argv.append('py2exe')

setup(console=["result.py"])


你看一下dist目录里生成的library.zip有没有把email目录打包进去了,我试了是可以的,按照下面的result.py打包出来的result.exe是能正常运行的:

import email

print dir(email)
houxuanfelix 2009-02-04
  • 打赏
  • 举报
回复
把setup.py修改成这样
# mysetup.py
from distutils.core import setup
import py2exe

#setup(console=["result.py"], py_modules = ['email',],)
setup(console=["result.py"],
options = {"py2exe": {
"includes": ['email.Generator', 'email.Iterators', 'email.MIMEBase', 'email.MIMEMultipart', 'email.MIMEText', 'email.Utils', 'email.base64MIME']
}},)
又出现了这样的错误:
File "setup.py", line 8, in <module>
"includes": ['email.Generator', 'email.Iterators', 'email.MIMEBase', 'email.
MIMEMultipart', 'email.MIMEText', 'email.Utils', 'email.base64MIME']
File "D:\Python25\lib\distutils\core.py", line 151, in setup
dist.run_commands()
File "D:\Python25\lib\distutils\dist.py", line 974, in run_commands
self.run_command(cmd)
File "D:\Python25\lib\distutils\dist.py", line 994, in run_command
cmd_obj.run()
File "D:\Python25\Lib\site-packages\py2exe\build_exe.py", line 223, in run
self._run()
File "D:\Python25\Lib\site-packages\py2exe\build_exe.py", line 274, in _run
self.find_needed_modules(mf, required_files, required_modules)
File "D:\Python25\Lib\site-packages\py2exe\build_exe.py", line 1189, in find_n
eeded_modules
mf.import_hook(mod)
File "D:\Python25\Lib\site-packages\py2exe\mf.py", line 649, in import_hook
return Base.import_hook(self,name,caller,fromlist)
File "D:\Python25\Lib\site-packages\py2exe\mf.py", line 131, in import_hook
m = self.load_tail(q, tail)
File "D:\Python25\Lib\site-packages\py2exe\mf.py", line 197, in load_tail
raise ImportError, "No module named " + mname
ImportError: No module named email.Generator

D:\Python25>python.exe setup.py py2exe
running py2exe
*** searching for required modules ***
Traceback (most recent call last):
File "setup.py", line 8, in <module>
"includes": ['email.Generator', 'email.Iterators', 'email.MIMEBase', 'email.
MIMEMultipart', 'email.MIMEText', 'email.Utils', 'email.base64MIME']
File "D:\Python25\lib\distutils\core.py", line 151, in setup
dist.run_commands()
File "D:\Python25\lib\distutils\dist.py", line 974, in run_commands
self.run_command(cmd)
File "D:\Python25\lib\distutils\dist.py", line 994, in run_command
cmd_obj.run()
File "D:\Python25\Lib\site-packages\py2exe\build_exe.py", line 223, in run
self._run()
File "D:\Python25\Lib\site-packages\py2exe\build_exe.py", line 274, in _run
self.find_needed_modules(mf, required_files, required_modules)
File "D:\Python25\Lib\site-packages\py2exe\build_exe.py", line 1189, in find_n
eeded_modules
mf.import_hook(mod)
File "D:\Python25\Lib\site-packages\py2exe\mf.py", line 649, in import_hook
return Base.import_hook(self,name,caller,fromlist)
File "D:\Python25\Lib\site-packages\py2exe\mf.py", line 131, in import_hook
m = self.load_tail(q, tail)
File "D:\Python25\Lib\site-packages\py2exe\mf.py", line 197, in load_tail
raise ImportError, "No module named " + mname
ImportError: No module named email.Generator
houxuanfelix 2009-02-04
  • 打赏
  • 举报
回复
还是一样的提示....
郁闷中.......
Semigod 2009-02-04
  • 打赏
  • 举报
回复
先去看看你打的包中是不是有email这个module,如果没有的话,试试看这样写

setup(console=["result.py"], py_modules = ['email',],)

37,721

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧