os.environ() 在为 Hudson 设置时出错

2 投票
2 回答
1082 浏览
提问于 2025-04-16 00:02

我想写一个小的Python脚本来设置HUDSON_HOME这个环境变量。

在命令行中,我可以很简单地用这个命令来做到:>>set HUDSON_HOME=http://localhost:8080

但是我想知道怎么直接通过Python来做到这一点?我不想用os.system()来执行命令行的方式……那os.environ()能帮上忙吗?

我在我的脚本中写了:

import os
os.environ('HUDSON_HOME')='http://localhost:8080'

但这可能只是为子进程设置了这个变量,而不是为父进程设置……有没有什么办法可以解决这个问题呢?

2 个回答

0

我不知道有什么办法可以做到你所要求的,因为在你的Python程序中修改环境变量只会改变这个程序的环境,以及它启动的子进程,但不会影响父进程。

不过,如果你只是想让某个Python程序根据你的命令行环境来找出一个变量的值,你可以直接把它的输出赋值给环境变量:

#!/usr/bin/env python

# code goes here

print 'http://localhost:8080'

如果上面的代码是你的程序,你可以在命令行中运行这个命令,这样就能把HUDSON_HOME设置为 http://localhost:8080

$ set HUDSON_HOME=`python program.py`

注意:那些是反引号,这样程序就知道要获取运行命令的输出,而不是命令本身。

3

os.environ 是一个字典,用来表示环境变量。你可以这样使用它:

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

不过,按照我所知道的,它不能改变父进程的环境。

撰写回答