繁体   English   中英

pyinstaller没有名为错误的模块

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM