Python -Py2Exe '이메일'모듈을 사용하여 .exe를 빌드 할 수 없습니다.

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

  •  05-07-2019
  •  | 
  •  

문제

py2exe는 표준 이메일 모듈에서 작동하지 않습니다

여보세요. 스크립트를 EXE로 변환하기 위해 py2exe를 사용하려고합니다. 빌드 프로세스는 다음을 보여줍니다.


다음 모듈은 누락 된 것으로 보입니다

'email.encoders', 'email.generator', 'email.iterator', 'email.mimebase', 'email.mimemultipart', 'email.mimetext', 'email.utils', 'email.base64mime']]

실행 파일은 작동하지 않습니다. 참조 된 모듈이 포함되어 있지 않습니다. 나는 인터넷에서 이것을 조사했고 py2exe가 표준 LIB 이메일 모듈에 사용 된 게으른 수입에 문제가 있음을 알았습니다. 불행히도 나는이 문제에 대한 해결 방법을 찾는 데 성공하지 못했습니다. 누구든지 도울 수 있습니까?

고맙습니다,

PS 스크립트의 가져 오기는 다음과 같습니다.

코드 : 이메일에서 모든 가져 오기 문자열, 시간, SYS, OS, SMTPLIB를 선택하십시오. MIMEMULTIPART 이메일에서 MIMEMULTIPART 가져 오기 메일에서 MIMEBASE 가져 오기 MIMETEXT MIMETEXT MIMETEXT 이메일 가져 오기 인 ENCODERS

도움이 되었습니까?

해결책

PY2EXE와 함께 작업 할 필요가 없다면 BBFreeze가 더 잘 작동하며 이메일 모듈로 시도했습니다. http://pypi.python.org/pypi/bbfreeze/0.95.4

다른 팁

이 질문을 살펴보십시오 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의 ModuleFinder가 올바르게 사용하면 이메일 패키지를 올바르게 찾을 수 있다고 확신합니다 (즉, Python 2.5+에서 위의 이름을 사용하거나 Python 2.4-의 이전 이름을 사용합니다). 확실히 Spambayes 설정 스크립트에는 이메일 패키지를 명시 적으로 포함 할 필요가 없으며 문제없이 이메일 모듈이 포함되어 있습니다.

다른 답변은 모듈을 구체적으로 포함 해야하는 경우 명령 줄을 통해 "포함"옵션을 사용하거나 설정을 호출 할 때 전달해야한다는 점에서 정확합니다.

"포함"옵션을 사용하십시오. 보다: http://www.py2exe.org/index.cgi/listofoptions

setup.py에 누락 된 모듈을 명시 적으로 포함하여 작동했습니다.

오래된 setup.py :

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

새로운 setup.py :

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

내 앱을 PY24에서 26으로 포팅하는 동안 같은 문제가있었습니다.

읽고 나서 http://www.py2exe.org/index.cgi/exewitheggss다음 해결책을 찾은 경우 :

내 응용 프로그램에서 :

import email
import email.mime.text
import email.mime.base
import email.mime.multipart
import email.iterators
import email.generator
import email.utils

try:    
    from email.MIMEText import MIMEText
except:    
    from email.mime import text as MIMEText

setup.py에서 :

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")

PY2EXE가 런타임 동안로드 된 패키지로 작동하려면 앱 어딘가에 앱에서 필요한 모듈을 명시 적으로 가져 오는 것 같습니다. 그런 다음 moudlefinder.addpackagepath (,)로 setup.py에서 py2exe를 제공하십시오. 내성. 앱에서

이것은 내 문제를 해결합니다 : 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,
    )
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top