当我试图将shell变量导入python时,如何修复这个关键错误



这个问题以前在这里被问过,但当我试图模仿正确答案时,我遇到了一个关键错误,我想知道我做错了什么。

我有一个shell脚本,可以在家中创建一个目录:

#!/bin/sh
#choose path to home
directory=~/.some_file
if [ ! -d "$directory" ]
then mkdir "$directory"
fi
#I then export the variable
export directory

然后我转到我的python脚本,我想使用shell脚本中的变量目录作为python脚本中的同一变量

#!/usr/bin/env python3
import os
variable = os.environ["directory"]
print(variable)

当我运行python文件时,我得到一个错误

File "/home/user/import_sh_var.py", line 5, in <module>
variable = os.environ["directory"]
File "/usr/lib/python3.8/os.py", line 675, in __getitem__
raise KeyError(key) from None
KeyError: 'directory'

所以我假设我从错误消息中为变量返回了None,但为什么呢?我一定从根本上误解了"出口"在外壳中的作用

我不知道这是否重要,但我正在使用zsh

如果在shell脚本中定义环境变量并将其导出,则在同一shell脚本中启动的Python程序将能够看到脚本中导出的环境变量。请考虑下面这两个骨架脚本。这是setvar.sh:

#! /bin/bash
export B=10
./getvar.py

这个是getvar.py:

#! /usr/bin/env python3 
import os
print(os.environ["B"])

然后运行setvar.sh:

$ ./setvar.sh 
10

至少在bash下,输出是预期的。即:getvar.py继承了setvar.sh定义的环境。

相关内容

  • 没有找到相关文章

最新更新