【发布时间】:2022-07-26 19:02:28
【问题描述】:
我在我的产品中使用 falcon 3.1.0 框架进行微服务开发。此外,我正在使用 pyinstaller 4.10 创建 Windows 可执行文件。我可以使用 gevent 运行微服务,也可以使用 pyinstaller 创建 Windows 可执行文件。在运行可执行文件时,它无法导入 falcon 子模块,但对于 falcon 2.0,它可以工作。它会引发以下错误。
Traceback (most recent call last):
File "run_accountregistration.py", line 9, in <module>
File "PyInstaller\loader\pyimod03_importers.py", line 495, in exec_module
File "app.py", line 6, in <module>
File "PyInstaller\loader\pyimod03_importers.py", line 495, in exec_module
File "falcon__init__.py", line 32, in <module>
File "falcon\app.py", line 22, in init falcon.app
ImportError: cannot import name app_helpers
[5848] Failed to execute script 'run_accountregistration' due to unhandled exception!
对于 falcon 2.0,它可以工作
(accregisterenv) C:\MUM_DEV_TEAM\edcservices\accountregistration-ps>dist\run_accountregistration\run_accountregistration.exe
Directory logs Created
Directory account_registration Created
Successfully fetch connection details
Server start running at 127.0.0.1:8005```
【问题讨论】:
-
这很可能是由
pyinstaller所谓的“隐藏导入”引起的,即静态分析无法检测到的。因为pyinstaller不知道该模块,所以它不包含在.exe中。该文档有一个非常有用的部分,称为 When things go wrong。我建议你完成它。 -
感谢您的快速回复。在 pyinstaller 规范文件中添加了以下隐藏导入。 hiddenimports=['falcon.app_helpers', 'xml.etree', 'responders'] 。现在可执行 import falcon app_helpers 子模块,但它不是从 falcon 导入响应者子模块。
标签: python pyinstaller falcon