在我的setup.py
中,我定义了一个如下的入口点:
entry_points={
'console_scripts' : [
'cofo = cofo:gui_main'
]
},
调用python setup.py develop
按预期生成cofo
脚本。但是gui_main
启动了一个wxWindows应用程序,我想在之后“释放”控制台。我怎么能做到呢?如果我使用gui_scripts
而不是console_scripts
,这不会有什么不同。
更新:
对于“free”控制台,我的意思是我希望从命令提示符启动脚本(即向其传递命令行参数),但希望在gui启动后命令提示符可用。像这样:
^{pr2}$目前我没有得到等待提示,因为脚本正在运行并“阻塞”命令行。我的主要平台是OSX,但我对一个通用的解决方案感兴趣。
发生这种情况是因为shell正在等待进程完成。看起来你在寻找类似于守护进程的东西。为此,可以使用
os.fork()
创建进程的副本,然后用sys.exit()
终止主进程(父进程)。在请注意,此代码与distutils无关。这是你的程序将作为一个守护程序。在
下面的最小示例适用于我使用Windows7332位、Python2.7.1、WX2.8.12.2(MSWUnicode)。当调用}。在
python setup.py develop
时,分别为控制台和GUI脚本生成cofo.exe
和{执行
cofogui.exe
时,不会出现控制台窗口(这是您所说的“免费”控制台吗?)在本例使用setuptools对
distutils
的增强。在以及
^{pr2}$更新: 基于Windows和Unix的平台在启动进程时运行方式不同。在Unix系统上,如果应用程序要在后台运行,通常的过程是使用
os.fork()
系统调用。如anotheranswer中所述,这可以在应用程序外部完成,方法是编写一个包装器脚本,为您做后台处理。在如果这必须是一个完全用Python编写的通用解决方案,那么如下所示应该可以满足您的需要:
对于linux/unix(包括macosx)shell,您可以运行一个命令,并通过在其后面加上“&;”后缀来告诉它转到后台。例如:
这是一个页面,其中有一些关于这个的额外信息:http://www.bsdguides.org/guides/netbsd/beginners/job_control/print
我建议您只需手动使用该命令/指导您的用户使用该命令(如果他们已经在使用a cli,那么这就不需要多问了。)如果您确实希望命令在默认情况下进入后台,那么可以使用一个使用上述方法的小型bash脚本来包装脚本。在
相关问题 更多 >
编程相关推荐