【发布时间】:2019-08-09 19:40:39
【问题描述】:
我的项目使用mapreduce,没有hadoop,由两个文件组成:
bash.sh 和 mapreduce.py.
我想使用环境变量在 bash.sh 和 mapreduce.py 之间传递信息。
在 bash.sh 中,我使用 export myvariable,在 mapreduce.py 中,我使用 os.environ ['myvariable']。
我想在 mapreduce.py 中编辑 myvariable 并通过 bash.sh 打印结果。我试图执行这个指令:os.environ ['myvariable'] = 'hello',但在 bash.sh 上,'myvariable' 是空的。你有什么建议吗?
【问题讨论】:
-
@Adii 的回答指出这是不可能的。环境变量不是全局的。它们对每个进程都是私有的。当一个进程启动另一个进程时,它可以将当前的环境变量传递给新进程,也可以为其提供一组自定义变量。但是该新进程无法修改其父进程的环境变量。更一般地说,没有进程可以修改另一个进程的环境变量。
标签: bash python-2.7 mapreduce environment-variables mrjob