2017-02-05 10 views
0

현재 Python-Flask 웹 사이트의 독립 실행 형 Windows 실행 파일을 만들려고합니다. 나는 cx_freeze와 PyInstaller를 시도했지만, 수입 할 때마다 문제가 발생했다. 특히, 나는 다음 역 추적을 얻을 : 이러한 도구의Flask 패키지의 ImportError - cx_freeze 및 Pyinstaller

* Restarting with stat 
* Debugger is active! 
* Debugger pin code: 941-349-200 
* Running on http://0.0.0.0:8080/ (Press CTRL+C to quit) 
Traceback (most recent call last): 
    File "C:\Python27\lib\site-packages\cx_Freeze\initscripts\__startup__.py", line 12, in <module> 
    __import__(name + "__init__") 
    File "C:\Python27\lib\site-packages\cx_Freeze\initscripts\Console.py", line 24, in <module> 
    exec(code, m.__dict__) 
    File "runserver.py", line 7, in <module> 
    File "C:\Python27\lib\site-packages\flask\app.py", line 841, in run 
    run_simple(host, port, self, **options) 
    File "C:\Python27\lib\site-packages\werkzeug\serving.py", line 706, in run_simple 
    reloader_type) 
    File "C:\Python27\lib\site-packages\werkzeug\_reloader.py", line 263, in run_with_reloader 
    reloader.run() 
    File "C:\Python27\lib\site-packages\werkzeug\_reloader.py", line 144, in run 
    self.extra_files): 
    File "C:\Python27\lib\site-packages\werkzeug\_reloader.py", line 22, in _iter_module_files 
    filename = getattr(module, '__file__', None) 
    File "C:\Python27\lib\site-packages\email\__init__.py", line 79, in __getattr__ 
    __import__(self.__name__) 
ImportError: No module named message 

모두 포함하는 정확한 모듈을 지정하는 방법을 가지고, 경우에 도구는해야합니다 모든 것을 감지하지 못합니다. 와

python cxfreeze runserver.py --target-dir DB --include-modules=message,email 

및 pyInstaller 중에 :

python pyinstaller.py runserver.py --debug --onedir --hidden-import=message --hidden-import=email 

을하지만 아무 일 없다 나는 다른 방법들, 다음 명령을 나 cx_Freeze 실행했습니다. cx_freeze가 모든 것을 생성 한 후에 전자 메일 및 메시지 .pyc 파일이 존재하고이를 제거하면 다른 오류가 발생하지만 어떤 이유 때문에이 부분에는 충분하지 않습니다.

나는 python을 통해 사이트를 성공적으로 실행할 수 있으며 사이트를 실행하기 시작한 후에 오류가 발생하는 것을 알 수 있습니다.

나는이 버그를 연구 해왔다. 언급하기 전에 몇 가지 사례가 있었지만, 제기 될 때마다 결코 그 해결책이 아닌 것처럼 보인다. werkzeug가 "게으른 수입품"을 취급하는 방식이지만, 대화는 보통 "이것을 원하면 플라스크를 사용하지 마십시오"로 끝납니다. 그것은 저를위한 실행 가능한 해결책이 아닙니다, 누군가가 그것을 도울 수 있던 경우에 그래서 중대하게 평가 될 것입니다.

답변

0

일부 라인을 주석하여 해결했습니다. 나는 사양 파일에 다음을했고, 그것은

hiddenimports=['email.mime.message', 'email.mime.image', 'email.mime.text', 'email.mime.multipart', 'email.mime.nonmultipart', 'email.mime.base', 'email.mime.audio'] 

또는 무엇도 거짓

에 디버그 설정되어 작동을 일