[英]pyinstaller no module named error
首先:python 2.7,pyinstaller 3.3.1
我是pyinstaller和flask的新手,我正在尝试为嵌入式Linux系统开发一个小应用程序。
关键是每次使用pyinstaller生成我的应用程序时,它都可以运行,但是当我运行它时,它却无法运行。
我的最后一个错误是以下内容:
Traceback (most recent call last):
File "hello.py", line 22, in <module>
File "flask/app.py", line 943, in run
File "werkzeug/serving.py", line 812, in run_simple
File "werkzeug/_reloader.py", line 273, in run_with_reloader
File "werkzeug/_reloader.py", line 152, in run
File "werkzeug/_reloader.py", line 22, in _iter_module_files
File "email/__init__.py", line 79, in __getattr__
ImportError: No module named image
就我而言,我不需要此模块,但是对我来说,最重要的是知道在哪里可以找到那些隐藏的依赖项。 我真正想知道的是一种寻找这些依赖关系并更改脚本以使用pyinstaller生成捆绑包的方法。 到现在为止,我使用以下行来生成捆绑包:
pyinstaller --noupx --hiddenimport email.mime.message --hiddenimport图像hello.py
第二个隐藏的导入是错误的,但是,我怎么知道缺少哪个导入??? 我必须在哪里搜索这些模块?
我的第一个隐藏导入(email.mime.message)也有类似的消息,只是说缺少导入“消息”。 我可以在这里阅读解决方案,但是这很幸运!
我如何从该消息中知道什么是必要的依赖关系?
大发脾气!
您应该运行它以使其工作:
pyinstaller -F -w \
--onefile \
--hidden-import='email.mime.multipart' \
--hidden-import='email.mime.message' \
--hidden-import='email.mime.text' \
--hidden-import='email.mime.image' \
--hidden-import='email.mime.audio' \
--hidden-import='sqlalchemy.sql.default_comparator' \
--hidden-import='jinja2' \
main.py
感谢mrf345
from PyInstaller.utils.hooks import collect_data_files, eval_statement, collect_submodules
datas = collect_submodules('email.mime')
hidden_imports = ['sqlalchemy.sql.default_comparator', 'jinja2'] + datas
将此添加到从pyi-makespec生成的.spec文件中,有关更多信息, 请参见https://pythonhosted.org/PyInstaller/hooks.html#understanding-pyinstaller-hooks
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.