无法在Python中读取环境变量

时间:2019-04-29 10:40:44

标签: python

无法使用Python读取环境变量。我正在使用Flask,并且想使用一个其值存储在环境变量中的Key。

我使用导出命令存储了密钥,并尝试使用OS模块在python中使用密钥读取值

  1. 我使用以下命令将值存储在环境变量中:
export KEY123=xxx123xxxABCxxx789
  1. 在python(Flask应用程序)中,我试图使用以下代码读取值:
import os 
app.config['KEY'] = os.environ['KEY123']
  1. 运行脚本时出现错误:
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”进行打印,则环境变量将不存在。   我这样做是为了避免意外提交到存储库

4 个答案:

答案 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
_________________________________________________________________

或者您也可以在

中设置变量

控制面板\系统和安全性\系统\高级系统设置\环境变量 然后添加新变量。

如果需要,请重新启动服务器/控制台一次。