Python 2.7 可移植性的subprocess.Popen([';python';,…)的替代方案?

Python 2.7 可移植性的subprocess.Popen([';python';,…)的替代方案?,python-2.7,pygame,subprocess,multiprocessing,Python 2.7,Pygame,Subprocess,Multiprocessing,因此,我正在用pygame编写一个python应用程序,我需要从调用的外部脚本打开第二个窗口。我无法直接打开窗口,因为pygame不支持多个窗口 我用它工作 subprocess.Popen(['python', 'thisFile.py', str(inputs), str(outputs)]) ... if __name__ == '__main__': createNewWindow(sys.argv[1],sys.argv[2]) 但我担心,一旦我将我的应用程序打包

因此,我正在用pygame编写一个python应用程序,我需要从调用的外部脚本打开第二个窗口。我无法直接打开窗口,因为pygame不支持多个窗口

我用它工作

subprocess.Popen(['python', 'thisFile.py', str(inputs), str(outputs)])

...    

if __name__ == '__main__':
    createNewWindow(sys.argv[1],sys.argv[2])
但我担心,一旦我将我的应用程序打包成一个可执行文件,供未安装python的用户使用,该命令就会失败。此外,我的代码是用python 2.7编写的,因此,如果用户使用运行python 3的“python”命令,该调用可能也会失败

我尝试过使用多重处理,但没有效果

p = Process(target=createNewWindow, args=(inputs, outputs))
p.start()
# Runs my main program in a new window, and doesnt call createNewWindow like it should

p = Process()
p.start()
p.run(createNewWindow(inputs, outputs))
# Runs my main program in a new window, and calls createNewWindow in the old window, deleting session data
有没有办法让这段代码适用于所有用户和所有系统?这是一个选项


编辑:我尝试使用线程,但这似乎不足以欺骗pygame允许我打开多个窗口。当我尝试在新线程上打开一个新窗口时,应用程序就会崩溃。问题是为什么需要它。也许你应该在一个窗口中显示所有内容,或者你应该使用tkinter、wxPython、PyQt、pyglet而不是PyGame这绝对是可能的,而且诚实地说应该可以通过多处理来完成。为应用程序打开第二个窗口有很多原因。我需要做的不是这里的问题。
'thisFile.py'
是当前正在执行的脚本吗?在您的流程示例中,删除
p.run(createNewWindow(输入、输出))
完全正确。您所需要做的就是启动进程并让python为您运行目标方法。您最终在父进程中调用了
createNewWindow
。谢谢@tdelaney是的,这些都是单独的示例,我想我已经解决了问题。我没有,也没有将代码封装到Main()中在我的主文件中。我假设,因为我是从次文件启动一个新进程,所以我只需要担心这个进程。但是,向我的主文件中添加
if uuuuuuuu name\uuuuuuu=='uuuuuuuu main::main()
使target=args=示例工作,正如您所说:)