3 回答
TA贡献1895条经验 获得超7个赞
source 不是可执行命令,而是内置的shell。
使用的最常见情况source是运行更改环境的Shell脚本并将该环境保留在当前Shell中。这就是virtualenv修改默认python环境的方式。
创建子流程并source在子流程中使用可能不会做任何有用的事情,也不会修改父流程的环境,使用源脚本的任何副作用都不会发生。
Python有一个类似的命令,execfile该命令使用当前的python全局名称空间(或另一个,如果您提供一个)来运行指定的文件,您可以使用与bash命令类似的方式source。
TA贡献1797条经验 获得超4个赞
您可以只在子shell中运行该命令,然后使用结果更新当前环境。
def shell_source(script):
"""Sometime you want to emulate the action of "source" in bash,
settings some environment variables. Here is a way to do it."""
import subprocess, os
pipe = subprocess.Popen(". %s; env" % script, stdout=subprocess.PIPE, shell=True)
output = pipe.communicate()[0]
env = dict((line.split("=", 1) for line in output.splitlines()))
os.environ.update(env)
添加回答
举报