【问题标题】:os.environ() giving errors while setting for Hudsonos.environ() 在为 Hudson 设置时出错
【发布时间】:2010-06-16 10:41:17
【问题描述】:

我想要一个小的 python 脚本来设置 HUDSON_HOME 环境变量。

使用 shell 时,我可以使用 >>set HUDSON_HOME=http://localhost:8080

轻松做到这一点

但是我怎样才能直接通过 python 做同样的事情呢?我不想通过将命令行传递给 os.system() 来做到这一点.. os.environ() 有什么帮助吗??

我的脚本中有: 导入操作系统 os.environ('HUDSON_HOME')='http://localhost:8080'

但它可能是为 subprocss 而不是父 shell.. 有什么办法解决这个问题吗??

【问题讨论】:

  • 子进程不能修改父进程的环境。

标签: python hudson environment-variables


【解决方案1】:

os.environ 是环境的字典表示。你会这样使用它:

>>> import os
>>> os.environ['HUDSON_HOME'] = 'http://localhost:8080'

但是,它不能修改父进程AFAIK的环境。

【讨论】:

    【解决方案2】:

    我不知道有任何方法可以做到这一点按照您的要求,因为修改 Python 程序中的环境只会改变它的环境,以及任何子进程,而不是父进程过程。

    也就是说,如果你需要做的只是有一些 Python 程序来计算变量的值是什么,取决于你的 shell,你应该能够简单地将它的输出分配给环境变量:

    #!/usr/bin/env python
    
    # code goes here
    
    print 'http://localhost:8080'
    

    如果上面是您的程序,您可以在 shell 上运行它,并将 HUDSON_HOME 设置为 http://localhost:8080

    $ set HUDSON_HOME=`python program.py`
    

    注意:这些是反引号,这是它知道获取运行命令的输出而不是命令本身的方式。

    【讨论】:

      猜你喜欢
      • 2010-10-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-12
      • 1970-01-01
      相关资源
      最近更新 更多