我正在构建一个使用py2app进行分发的应用程序。因为我不希望从.app文件中提取源,所以我有一个名为run.py的存根文件,然后在mainapp.py中运行代码:
import mainapp
直接在终端中运行它(没有py2app参与)会在代码的gevent依赖部分中产生冻结。当变成.app时,结果是一样的。以上述方式导入是否会改变任何解释器的环境?看起来很奇怪,只有冻结,没有错误消息(没有try / catch块。)
答案 0 :(得分:0)
在Python中导入模块时,将执行该模块。确保在mainapp
中没有可以冻结python VM的“免费代码”(如无限循环)。
“自由代码”是函数或类定义之外的指令集。
例如在
中import one_module
while(true) :
various_code()
def foo() :
print "bar"
第二行是免费代码。
当我尝试导入此脚本时,执行while
指令并冻结python。