在tcsh开放式python中设置环境

2024-09-28 03:15:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我在tcshell中工作,并使用setenv foo bar等命令设置环境脚本。我使用命令source set_env.sh运行此脚本,然后在设置环境时,运行编译命令make my_ target...

我希望通过调用subprocess.Popen甚至os.system从Python执行整个过程来实现自动化。问题是:

  1. Shell打开的表单Python不识别命令source。我的假设是,/bin/bashshell已打开。如何强制Python打开/bin/tcsh
  2. 如何为第二个命令(make my_ target...)保留已更改的环境设置

Tags: 命令env脚本sourcetargetmakebin环境
1条回答
网友
1楼 · 发布于 2024-09-28 03:15:32

如果在Python中使用subprocess包,那么默认情况下它不会运行shell,它只会启动一个进程(不使用shell)。您可以添加shell=True,但这对您没有多大好处,因为环境变量仅为当前进程设置,并且不会发送回父进程

Python启动tcsh子进程,子进程不能影响父进程

解决方案是让脚本打印出环境变量,然后用Python解析环境变量的输出

因此,如果脚本打印出如下内容:

XX=one
YY=two

然后在Python中,按照如下方式执行操作:

for line in output.split('\n'):
    if line == '':
        continue
    k, v = line.split('=')
    os.environ[k] = v

相关问题 更多 >

    热门问题