如何在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/shsubprocess完成运行您的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"