我目前正在尝试为我的Python-Flask网站创建一个独立的Windows可执行文件。我已经尝试过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
这两个工具都有一个方法,用于指定要包含的确切模块,以防工具无法检测到它需要的所有内容。我使用以下命令运行cx_freeze,其中包括:
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生成所有内容之后,存在电子邮件和消息.pyc文件,并且删除它们会导致其他错误,但由于某种原因,它们不足以支持这部分内容。
我能够通过python自己成功运行该站点,正如您所看到的,在它开始运行该站点后发生错误。
我一直在研究这个漏洞,并且之前已经有过一些错误,但无论什么时候出现它似乎都没有解决它 - 有些人已表示它可能是werkzeug处理&懒惰导入&#34;的方式的问题,但对话通常以&#34;如果你想这样做而不使用烧瓶&#34;。这对我来说不是一个可行的解决方案,所以如果有人能帮到它,我将不胜感激。
答案 0 :(得分:2)
在隐藏导入中,您必须指定电子邮件mime类型。我在spec文件中执行了以下操作并且它有效
hiddenimports=['email.mime.message', 'email.mime.image', 'email.mime.text', 'email.mime.multipart', 'email.mime.nonmultipart', 'email.mime.base', 'email.mime.audio']
或者也可以将Debug设置为False
答案 1 :(得分:0)
我通过在email__init __。py
中注释掉一些行来修复它Python 2.7.12, trying to build an executable file using pyinstaller. I keep getting the below error