从存根脚本导入主脚本导致冻结

时间:2011-10-19 19:46:43

标签: python py2app gevent

我正在构建一个使用py2app进行分发的应用程序。因为我不希望从.app文件中提取源,所以我有一个名为run.py的存根文件,然后在mainapp.py中运行代码:

import mainapp

直接在终端中运行它(没有py2app参与)会在代码的gevent依赖部分中产生冻结。当变成.app时,结果是一样的。以上述方式导入是否会改变任何解释器的环境?看起来很奇怪,只有冻结,没有错误消息(没有try / catch块。)

1 个答案:

答案 0 :(得分:0)

在Python中导入模块时,将执行该模块。确保在mainapp中没有可以冻结python VM的“免费代码”(如无限循环)。

“自由代码”是函数或类定义之外的指令集。

例如在

import one_module

while(true) :
    various_code()

def foo() :
    print "bar"

第二行是免费代码。

当我尝试导入此脚本时,执行while指令并冻结python。