如何在Linux上使用Python导出
我需要在Python中做这样的输出:
# export MY_DATA="my_export"
我试过做:
# -*- python-mode -*- # -*- coding: utf-8 -*- import os os.system('export MY_DATA="my_export"')
但是,当我列出口,“MY_DATA”不出现:
# export
如何在不将“my_export”保存到文件的情况下使用Python进行导出?
你真的想要做
import os os.environ["MY_DATA"] = "my_export"
export
是一个直接给shell(例如bash
)的命令,告诉它添加或修改其中的一个环境variables。 你不能从一个subprocess(比如Python)改变shell的环境,这是不可能的。
以下是您正在尝试的操作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 local environment
当最底部的/bin/sh
subprocess完成运行您的export ...
命令时,它将被丢弃,以及您刚更改的环境。
另一种做法是,如果你很匆忙,而且不介意hacky的回味,那就是在你的bash环境中执行python脚本的输出,并打印出执行python环境设置的命令。 不理想,但它可以完成工作在一个捏。 YMMV在shell上不是很方便。
$(python -c 'print "export MY_DATA=my_export"')
(你也可以把这个语句用反引号括起来“)
并不那么简单:
python -c "import os; os.putenv('MY_DATA','1233')" $ echo $MY_DATA # <- empty
但:
python -c "import os; os.putenv('MY_DATA','123'); os.system('bash')" $ echo $MY_DATA #<- 123
你可以尝试os.environ [“MY_DATA”]。
os.system('/home/user1/exportPath.ksh')
exportPath.ksh:
export PATH=MY_DATA="my_export"