代码之家  ›  专栏  ›  技术社区  ›  hidayat

python脚本有问题

  •  0
  • hidayat  · 技术社区  · 14 年前

    我想从python脚本运行一个csh文件,

    例子,

    #!/usr/bin/python
    import os
    
    os.system("source path/to/file.csh")
    

    我希望这个文件和我运行python脚本时在同一个shell中运行,因为 file.csh 脚本设置了一些我需要的环境变量。

    有人知道如何在python中实现这一点吗?

    2 回复  |  直到 14 年前
        1
  •  3
  •   Community kfsone    7 年前

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

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

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

    有关详细信息,请查看此问题: can a shell script set environment variables of the calling shell

        2
  •  0
  •   James    14 年前

    你可以这样混用:

    #!/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 .