我有一个窗口/视图enaml应用程序(后端是PySide)。我已经使用PyInstaller将其打包到.exe
,并且成功完成,但是当我运行可执行文件时,它抱怨.enaml
文件中的模块(我已经在.spec
文件中包含了文件和解析器,见下文)。对出什么问题有任何想法吗?
这里是运行.exe
文件的错误:
Traceback (most recent call last):
File "colEq.py", line 70, in <module>
from colEq import CaseView
ImportError: cannot import name CaseView
[CaseView
在colEq.enaml
文件中定义,并且引用的行是:
with enaml.imports():
from colEq import CaseView`
我的规格文件添加了以下内容,超出了PyInstaller生成的默认值:
a.datas+= [('colEq.enaml', 'colEq.enaml', 'DATA'),
('enaml\\core\\parser.py', parser_filepath, 'DATA')]
hiddenimports=[
"enaml",
"enaml.core.parse_tab.lextab",
"enaml.core.compiler_helpers",
"enaml.core.compiler_nodes",
"enaml.core.enamldef_meta",
"enaml.core.template",
"enaml.widgets.api",
"enaml.widgets.form",
"enaml.layout.api",
"enaml.stdlib.fields"
]
平台是Python 2.7,x86,Win 10。
问题出在fbs本身。 src/main/python
目录中所有添加的非python代码都不会添加到程序包中。除了修补fb本身,我没有找到其他方法。您可以在此处查看更改https://github.com/Infernion/fbs/commit/034ccc159dba2ec8b49fb1a03e7c4a20260cbdfb
[使用enaml库中的内部.enaml小部件也存在问题。还应该以某种方式将它们添加到发行版中。