运行exe文件会导致"无法执行脚本主文件"在pyi构建之后

时间:2018-03-31 14:19:08

标签: windows python-3.x pyinstaller

我在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,它仍然会失败,所以必须有其他事情发生。

1 个答案:

答案 0 :(得分:0)

我已经移动了我创建的包,并将它们放在与main.py相同的文件夹中。我不知道为什么

python main.py worked

并且pyinstaller exe失败。

这不是完整的答案,但肯定会导致问题