Python-Py2exeは 'email'モジュールを使用して.exeをビルドできません

StackOverflow https://stackoverflow.com/questions/174170

  •  05-07-2019
  •  | 
  •  

質問

py2exeは標準の電子メールモジュールでは動作しません

こんにちは。スクリプトをexeに変換するためにpy2exeを使用しようとしています。ビルドプロセスはこれを示しています:


次のモジュールが欠落しているようです

['email.Encoders'、 'email.Generator'、 'email.Iterators'、 'email.MIMEBase'、 'email.MIMEMultipart'、 'email.MIMEText'、 'email.Utils'、 'email.base64MIME ']

実行可能ファイルは機能しません。参照モジュールは含まれていません。これをインターネットで調査したところ、py2exeには標準のlibメールモジュールで使用されるレイジーインポートに問題があることがわかりました。残念ながら、この問題の回避策を見つけることに成功していません。誰でも助けることができますか?

ありがとうございます

PS スクリプトのインポートは次のようになります。

コード:すべて選択     インポート文字列、時間、sys、os、smtplib     email.MIMEMultipartからMIMEMultipartをインポート     email.MIMEBaseからMIMEBaseをインポート     email.MIMETextからMIMETextをインポート     メールインポートエンコーダーから

役に立ちましたか?

解決

py2exeを使用する必要がない場合は、bbfreezeの方がうまく機能します。メールモジュールで試してみました。 http://pypi.python.org/pypi/bbfreeze/0.95.4

他のヒント

この質問をご覧ください how-to-package-twisted-program -with-py2exe は同じ問題のようです。

そこに与えられた答えは、py2exeのコマンドラインにモジュールを明示的に含めることです。

使用している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

py2exeのモジュールファインダーは、正しく使用した場合(つまり、Python 2.5以降で上記の名前を使用するか、Python 2.4-で古い名前を使用した場合)、電子メールパッケージを正しく見つけることができると確信しています。確かに、SpamBayesセットアップスクリプトにはメールパッケージを明示的に含める必要はなく、メールモジュールは問題なく含まれています。

他の答えは正しいです。モジュールを具体的に含める必要がある場合は、" includes"を使用します。コマンドラインを介して、またはセットアップを呼び出すときにそれらを渡すオプションのいずれか。

" includes"を使用しますオプション。参照: http://www.py2exe.org/index.cgi/ListOfOptions

setup.pyに不足しているモジュールを明示的に含めることで機能しました:

OLD setup.py:

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

新しいsetup.py:

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

これは私の問題を解決します: setup.py edit

includes = ["email"]

これを試してください。これは私のpy2exeビルドで動作します。 " project_name.py"を置き換えるだけですメインスクリプトで。 EXTRA_INCLUDESは、メールパッケージのようなビルドに含める必要があるパッケージです。私もあなたと一緒に動作します。

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,
    )
scroll top