我正在运行一个具有嵌入式python解释器的应用程序,它是2.7。我需要运行一个独立的python应用程序作为子进程,但该应用程序只与python 2.6兼容。如何强制python应用程序使用python2.6解释器启动?
答案 0 :(得分:3)
就像沙丘已经说过的那样:
proc = Popen(['/path/to/executable', '-flag1', '--opt=value'])
可执行文件可以是带有shebang #!/usr/bin/env python2.6
的Python脚本,也可以是启动Python2.6解释器的bash脚本。
请注意,解释器不会等待2.6版本完成。您必须使用.wait()
方法。否则你的孩子进程就会变成僵尸。
# wait for the process to finish
proc.wait()
如果你想创建一个守护进程 - 意味着一个子进程在父进程被终止时不会终止 - 你需要os.fork()
函数。周围有脚本可以为您处理所有的事情 - 例如。 daemonize.py
答案 1 :(得分:2)
一些复杂情况,python脚本不是.py脚本,而是包装器bash可执行文件(带#!/ usr / bin / env python2)。
要使用python2.6运行脚本,您可以将其shebang更改为指向python2.6可执行文件:
#!/usr/bin/env python2.6
直接运行脚本:
subprocess.check_call(['/path/to/your_script'] + sys.argv[1:])
sys.argv[1:]
用于将命令行参数传递给子脚本。
如果您无法更改shebang,请运行:
subprocess.check_call(['/usr/bin/env', 'python2.6', '/path/to/your_script'] +
sys.argv[1:])