为什么在使用subprocess.popen()启动进程时未注入“ DYLD_LIBRARY_PATH”?

时间:2018-09-25 12:28:52

标签: python subprocess environment-variables

我正在尝试在OSX(High Sierra 10.13.6)上的Python3(3.6.6)中使用subprocess启动多个进程。我有一个需要几个参数的可执行文件。由于可执行文件依赖于某些共享库,因此它需要DYLD_LIBRARY_PATH包含共享对象的路径。

看来DYLD_LIBRARY_PATH注入不正确。以下代码片段捕获了该问题(我使用的是/bin/echo $DYLD_LIBRARY_PATH而不是上述可执行文件):

import subprocess
import os

my_env = os.environ.copy()
my_env["DYLD_LIBRARY_PATH"] = "/PATH/TO/SHAREDs"

subprocess.popen( ["/bin/echo","$DYLD_LIBRARY_PATH"] , env=my_env )

返回b'\n'

要查看是否与子流程相关,我还进行了以下快速检查:

import os
os.putenv( "DYLD_LIBRARY_PATH" , "/PATH/TO/SHAREDs" )
os.system( "echo $DYLD_LIBRARY_PATH" )

它还会返回b'\n

我做错什么了吗?

0 个答案:

没有答案