python脚本的问题

python脚本的问题,python,subprocess,Python,Subprocess,我想从python脚本运行csh文件 例如 #!/usr/bin/python import os os.system("source path/to/file.csh") 我希望这个文件在运行python脚本的同一个shell中运行,因为file.csh脚本设置了我需要的一些环境变量 有人知道如何在Python中做到这一点吗?子进程不能影响父进程的环境。最好是在单独的进程中运行csh脚本,获取它定义的环境变量,然后在python脚本中设置每个环境变量 即使这样,python脚本也无法影响运

我想从python脚本运行csh文件

例如

#!/usr/bin/python
import os

os.system("source path/to/file.csh")
我希望这个文件在运行python脚本的同一个shell中运行,因为
file.csh
脚本设置了我需要的一些环境变量


有人知道如何在Python中做到这一点吗?

子进程不能影响父进程的环境。最好是在单独的进程中运行csh脚本,获取它定义的环境变量,然后在python脚本中设置每个环境变量

即使这样,python脚本也无法影响运行python脚本的shell

解决这个问题的常用方法(AFAIK)是让脚本发出shell命令来设置环境,然后从主shell运行脚本并评估返回的内容


有关详细信息,您可能希望查看以下问题:

子进程不能影响父进程的环境。最好是在单独的进程中运行csh脚本,获取它定义的环境变量,然后在python脚本中设置每个环境变量

即使这样,python脚本也无法影响运行python脚本的shell

解决这个问题的常用方法(AFAIK)是让脚本发出shell命令来设置环境,然后从主shell运行脚本并评估返回的内容


要了解更多信息,您可能需要查看以下问题:

您可以这样做:

#!/usr/bin/env python
# This is kludge.py

print "setenv VARNAME \"the value\""
在您的情况下,可以让file.sh打印
setenv

然后来自csh:

$ eval `./kludge.py`
$ echo $VARNAME 
the value

这并不干净,但这是让子进程影响其父进程环境的唯一方法。这仅仅是因为父进程显式地允许它通过
eval

发生。您可以这样做:

#!/usr/bin/env python
# This is kludge.py

print "setenv VARNAME \"the value\""
在您的情况下,可以让file.sh打印
setenv

然后来自csh:

$ eval `./kludge.py`
$ echo $VARNAME 
the value

这并不干净,但这是让子进程影响其父进程环境的唯一方法。这只是因为父进程显式地让它通过
eval

发生,我想用source命令运行file.csh,但它不是wokring-correct,os.system(“source-path/to/file.csh”)查看一下模块,我想用source命令运行file.csh,但它不是wokring-correct,os.system(“source path/to/file.csh”)查看一下该模块