无法使用Python读取环境变量。我正在使用Flask,并且想使用一个其值存储在环境变量中的Key。
我使用导出命令存储了密钥,并尝试使用OS模块在python中使用密钥读取值
export KEY123=xxx123xxxABCxxx789
import os
app.config['KEY'] = os.environ['KEY123']
File ".../2.7/lib/python2.7/UserDict.py", line
23, in __getitem__
raise KeyError(key)
KeyError: 'KEY123'
这里到底做错了什么。
P.S:如果我使用
在命令行中打印值print(os.environ['KEY123']), it works!
如果我在其他终端中使用“ printenv”进行打印,则环境变量将不存在。 我这样做是为了避免意外提交到存储库
答案 0 :(得分:1)
命令export
设置当前shell的变量以及所有从当前shell启动的进程:
export KEY123=xxx123xxxABCxxx789
要永久设置它,系统范围内(所有用户,所有进程)在/etc/environment
中添加set变量:
sudo -H gedit /etc/environment
并添加要访问该文件的变量,例如:
KEY123=xxx123xxxABCxxx789
请勿在此处使用export
关键字。
您需要从当前用户注销并再次登录,以便环境变量发生更改。
答案 1 :(得分:1)
环境变量是从应用程序上下文外部通过应用程序传递的变量。环境变量的常见用例是将api密钥,URL,配置等传递给应用程序。
幸运的是,在python中,我们有virtual environments。虚拟环境是与应用程序相关的独立空间。同样,虚拟环境可以具有其环境变量。
在虚拟环境的activate
文件中,您可以设置环境变量,只要在此环境中运行应用程序,就会从那里读取变量。
# PATH-TO_VENV/bin/activate
KEY123=xxx123xxxABCxxx789
另一方面,如果使用IDE运行您的python程序,则在运行配置中应该有选择,以便能够添加环境变量。
答案 2 :(得分:0)
python-dotenv https://github.com/theskumar/python-dotenv#readme
将管理您的环境变量。
答案 3 :(得分:0)
如果您尝试在Windows中设置环境变量,则可以使用
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
conv1d_9 (Conv1D) (None, 17941, 15) 915
_________________________________________________________________
max_pooling1d_9 (MaxPooling1 (None, 8970, 15) 0
_________________________________________________________________
dropout_10 (Dropout) (None, 8970, 15) 0
_________________________________________________________________
batch_normalization_9 (Batch (None, 8970, 15) 60
_________________________________________________________________
conv1d_10 (Conv1D) (None, 8911, 30) 27030
_________________________________________________________________
max_pooling1d_10 (MaxPooling (None, 2227, 30) 0
_________________________________________________________________
dropout_11 (Dropout) (None, 2227, 30) 0
_________________________________________________________________
batch_normalization_10 (Batc (None, 2227, 30) 120
_________________________________________________________________
flatten_6 (Flatten) (None, 66810) 0
_________________________________________________________________
dense_7 (Dense) (None, 128) 8551808
_________________________________________________________________
dropout_12 (Dropout) (None, 128) 0
_________________________________________________________________
dense_8 (Dense) (None, 3) 387
=================================================================
Total params: 8,580,320
Trainable params: 8,580,230
Non-trainable params: 90
_________________________________________________________________
或者您也可以在
中设置变量控制面板\系统和安全性\系统\高级系统设置\环境变量 然后添加新变量。
如果需要,请重新启动服务器/控制台一次。