py2exe和邮件库再谈

2 投票
2 回答
970 浏览
提问于 2025-04-15 16:12

以下是导入的内容:

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
from email import Encoders 

在使用py2exe创建exe文件时,在Python2.6中运行正常,但在Python2.5中却不行。

似乎缺少以下模块: ['email.Encoders', 'email.Generator', 'email.Iterators', 'email.MIMEText', 'email.Utils', 'email.base64MIME']

这是Setup.py的内容:

from distutils.core import setup
import py2exe, glob
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" } })

我以为我解决了一个问题,但不幸的是,我还得尝试一下Python2.5。

2 个回答

0

我在使用邮件模块时也遇到了同样的问题。虽然系统会警告说缺少很多模块,但我运行时只碰到两个问题:一个是关于多部分内容的,另一个是关于文本的。我通过在setup.py文件中明确包含这两个模块来解决了这个问题:

旧的setup.py文件内容是:

setup(console = ['main.py'])

新的setup.py文件内容是:

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

Py2Exe在把各种模块打包成exe文件的时候常常会出很多问题。我自己也遇到过这种情况。我的建议是使用pyInstaller,我觉得它要好很多,使用起来也更简单。

撰写回答