我在Ubuntu上用Python 3编写了一个很大的应用程序。我已经为Windows创建了许多成功的端口,并使用pyi build来创建一个exe文件。
我对代码进行了重大更改,包括制作某些模块的包。如果我使用
,它仍然在Windows上运行python main.py
但是现在,如果我使用pyi build创建一个exe文件,我会收到错误:
failed to execute script main
我试图找出问题,但没有成功,似乎有许多代码失败的地方
我知道我无法期待这个问题的最终解决方案,但任何关于问题可能原因的指示都将得到真诚的赞赏。
[更多信息,4月18日]
pyi-build exe失败的充分原因与__init__.py文件有关。
我有一个带有文件的测试目录:
a.py
\__init__.py
main.py
pyi.spec
如果项目目录中有__init__.py文件则失败;如果我删除它,它不会失败:
main.py:
from a import A
a.py
class A(object):
pass
__ init__.py(空)
pyi.spec
# -*- mode: python -*-
a = Analysis(['main.py'],
hiddenimports=[],
hookspath=None,
runtime_hooks=None)
a.datas = list({tuple(map(str.upper, t)) for t in a.datas})
pyz = PYZ(a.pure)
exe = EXE(pyz,
a.scripts,
a.binaries,
a.zipfiles,
a.datas,
name='test_for_fail.exe',
debug=False,
strip=None,
upx=True,
console=False)
但是,如果我从我的真实项目目录中删除__init__.py,它仍然会失败,所以必须有其他事情发生。
答案 0 :(得分:0)
我已经移动了我创建的包,并将它们放在与main.py相同的文件夹中。我不知道为什么
python main.py worked
并且pyinstaller exe失败。
这不是完整的答案,但肯定会导致问题