這個問題之前在這里被問過,但是當我嘗試模擬正確答案時,我得到一個關鍵錯誤,我想知道我做錯了什么。
我有一個在 home 中創建目錄的 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
uj5u.com熱心網友回復:
如果您在 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。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/439534.html
標籤:Python python-3.x 贝壳
下一篇:Linux設定變數
