如何解决在tcsh中打开python设置环境
我在tc shell中工作,并使用setenv foo bar
之类的命令来设置环境脚本。我曾经使用命令source set_env.sh
运行此脚本,然后在设置环境后运行编译命令make my_ target...
我想通过调用subprocess.Popen
甚至os.system
从Python执行来自动化整个过程。麻烦是:
- 从Python打开的Shell无法识别命令
source
。我的假设是 / bin / bash 外壳已打开。如何强制Python打开 / bin / tcsh ? - 如何为第二个命令(
make my_ target...
)保留更改的环境设置?
解决方法
如果您在Python中使用subprocess
软件包,则默认情况下它将不会运行Shell,它将仅启动一个进程(不使用Shell)。您可以添加shell=True
,但是这样做对您没有多大好处,因为仅为 current 进程设置了环境变量,并且不会将其发送回父进程。
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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。