我有两种不同的Python安装(一种是在chrooted jail中,一种在外面,它们有不同的版本)。从运行其中一个的Python脚本,我需要调用“另一个Python”并获得一些内部值(sys.path)。
我可以使用像
这样的东西subprocess.call("<the other python> -c 'import sys; print sys.path'", shell=True)
将其重定向到一个文件,从那里读取,等等,但这看起来很复杂,像这样通过IO。
有简单直接的方法吗?
(基本上,我需要将sys.path从一个Python附加到另一个Python的sys.path)。
答案 0 :(得分:0)
简短的回答是否定的,没有其他更直接的方法。您正试图从另一个进程捕获运行时详细信息,因此需要进行某种进程间通信。我可以想到在不运行其他解释器的情况下获取此信息的唯一方法是对配置文件和环境/ shell变量进行一些非常复杂的解析,如果你在Windows上,也可能潜入注册表。
我认为你用一个(虽然很长)的单行代表会好得多:
from subprocess import Popen, PIPE
other_path = Popen("<other interpreter path> -c 'import sys; print sys.path'",
stdout=PIPE, shell=True).communicate()[0]
至少使用这种方法你不会在磁盘上写任何东西,所以你绕过了最慢的IO方法之一。