如何在Linux上使用Python的export
我需要在Python中做一个这样的导出:
# export MY_DATA="my_export"
我试着这样做:
# -*- python-mode -*-
# -*- coding: utf-8 -*-
import os
os.system('export MY_DATA="my_export"')
但是当我列出导出时,“MY_DATA”没有出现:
# export
我该如何在Python中导出,而不把“my_export”保存到文件里呢?
13 个回答
22
还有一种方法,如果你比较着急,并且不介意这种有点“黑科技”的做法,就是在你的bash环境中执行python脚本的输出,然后打印出设置python环境的命令。虽然这不是最理想的办法,但在紧急情况下可以解决问题。需要注意的是,这种方法在不同的shell中可能不太适用,所以效果可能会有所不同。
$(python -c 'print "export MY_DATA=my_export"')
(在某些shell中,你也可以用反引号``把语句括起来)
98
你实际上想要做的是
import os
os.environ["MY_DATA"] = "my_export"
116
export
是一个命令,你可以直接在命令行(比如 bash
)中输入,用来告诉系统添加或修改一个环境变量。你不能通过子进程(比如 Python)来改变你的命令行环境,这个是做不到的。
当你尝试运行 os.system('export MY_DATA="my_export"')
时,发生了以下事情...
/bin/bash process, command `python yourscript.py` forks python subprocess
|_
/usr/bin/python process, command `os.system()` forks /bin/sh subprocess
|_
/bin/sh process, command `export ...` changes its local environment
当最底层的 /bin/sh
子进程完成运行你的 export ...
命令后,它会被丢弃,连同你刚刚修改的环境变量一起消失。