如何在Databricks中将Shell脚本变量传递给Python
问题:Shell导出的环境变量无法在Python中读取
我尝试在Python中获取Shell脚本里定义的环境变量,相关代码如下:
Shell代码块:
export MY_VAR="my_value" echo $MY_VAR
Python代码块:
import os my_var = os.environ.get("MY_VAR") print(my_var)
目前Shell脚本里能正常输出MY_VAR的值,但Python调用os.environ.get("MY_VAR")时返回None,求解决方法。
解决办法
- 同一Shell会话内关联执行
如果是在终端环境,先执行变量导出命令,再直接运行Python脚本,确保两者属于同一个Shell会话:export MY_VAR="my_value" python your_script.py - 执行Python时临时传递变量
可以在启动Python的命令中直接附带环境变量,这种方式无需提前导出:MY_VAR="my_value" python your_script.py - Notebook环境特殊处理(如Databricks)
这类环境中每个代码块是独立进程,Shell块的环境变量无法直接传递给Python块。可以通过文件中转:
Shell块写入变量到文件:
Python块读取文件内容:echo "my_value" > /tmp/my_var_temp.txtwith open('/tmp/my_var_temp.txt', 'r') as f: my_var = f.read().strip() print(my_var)
原因说明
Shell进程和Python进程是相互独立的,export仅将变量添加到当前Shell进程的环境中,只有该Shell的子进程会继承这些环境变量。如果你的Shell代码和Python代码是分开执行的(比如Notebook的不同单元格),二者属于完全隔离的进程环境,因此Python进程无法读取到Shell进程里导出的变量。
内容的提问来源于stack exchange,提问作者Sharma
相关产品推荐
相关产品推荐

