赞
踩
实际上,弹出的窗口应该不是python窗口,而是操作系统运行的命令的窗口(如果有两个窗口,则需要按照下面的建议删除实际的python窗口)。您可以在使用subprocess模块时阻止它,类似于os模块。通常,子流程也会创建一个窗口,但您可以使用此调用函数来避免它。如果您希望通过管道将标准输入和输出到流程中,那么它甚至会使用可选参数input和return output,在本例中不需要这样做。在def call(command,io=''):
command = command.split()
startupinfo = subprocess.STARTUPINFO()
startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW
if io != None:
process = subprocess.Popen(command,stdin=subprocess.PIPE,stdout=subprocess.PIPE,stderr=subprocess.PIPE,startupinfo=startupinfo,shell=False)
return process.communicate(io)[0]
这应该有帮助。你会用它来代替操作系统()
而且,即使没有python,也可以通过pyinstaller将其变成可执行文件来使其工作(尽管您确实不应该在其他系统上使用它)。实际上,您可能需要在更改startupinfo子流程的同时执行此操作,才能使其正常工作。与py2exe或cxfreeze不同,pyinstaller非常容易使用,并且工作可靠。安装pyinstallerhere(它是一个zip文件,但是pyinstaller和其他站点会记录如何使用这个文件安装它)。如果要从命令行创建可执行文件,则可能需要在系统“path”变量中包含pyinstaller命令(可以从“控制面板”执行)。只是打字
^{pr2}$
你将得到一个单独的文件,独立的,无窗口的可执行文件。w使其无窗口,-F使其成为独立文件,而不是多个文件的集合。您应该会看到从中调用pyinstaller的dist子目录,该子目录将包括(可能会忽略的)单个独立的可执行文件,它不需要python,并且不会导致任何窗口弹出。在
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。