cx_freeze无法使用__init__ == __main__

时间:2016-11-18 22:01:30

标签: python exe

我有一个奇怪的问题。我正在使用cx_freeze从python脚本创建可执行文件。我有setup.py个文件,其中包含以下代码:

from cx_Freeze import setup, Executable;

setup(name='Notebook',
      version='1',
      description='This is a Notebook.',
      executables=[Executable('menu.py')]);

我用以下命令执行此文件:

python setup.py build

我的项目中有几个模块。当我直接运行我的菜单时:

m = Menu()
m.run();
一切正常。但是当我使用这张支票时:

if __name__ == '__main__':
    m = Menu()
    m.run();

.exe文件只是闪烁。有人可以帮忙吗? 对不起英文。在此先感谢,

2 个答案:

答案 0 :(得分:1)

我在Python 2.7中使用cx_Freeze 5.0,我遇到了完全相同的问题。

这似乎是回归,因为我的脚本曾经使用过以前版本的cx_freeze(4.3.4)。

更具体地说,我制作了一个exe(不是GUI:base = None),我随处可见。我写了一个叫做exe的蝙蝠。 除了“主要部分”中的印刷品外,所有印刷品均已印刷。

我还使用cx_Freeze提供的示例SimpleTkApp.py进行了测试。问题是一样的:当代码放在主要部分时,它不再起作用了:exe启动,然后停止,没有做任何事情。

答案 1 :(得分:1)

我最近遇到了同样的问题,但我确实设法搞清楚了!这是因为当您运行exe时,其__name__不是__main__,而是name_of_script__main__。因此,在您的情况下,我非常确定它是menu__main__

因此,要弄清楚__name__实际上是什么,您必须在代码正文的某处print(__name__)