Python,Django-访问settings.py中的环境变量

Python,Django-访问settings.py中的环境变量,python,django,Python,Django,在我的项目中,我想用python/Django发送一封电子邮件。为了做到这一点,我需要指定多个设置,其中之一是我的电子邮件密码。我想从环境变量中检索它 当我在settings.py中引用环境变量时,会收到一条消息,暗示该值错误,而不是我的实际密码。我确保在bash_profile中将环境变量设置为我的实际密码,并且当我在设置文件中硬编码我的密码时,电子邮件成功发送 这意味着在尝试将密码作为环境变量检索时出现问题 设置.py: import os # me trying to retrieve p

在我的项目中,我想用python/Django发送一封电子邮件。为了做到这一点,我需要指定多个设置,其中之一是我的电子邮件密码。我想从环境变量中检索它

当我在settings.py中引用环境变量时,会收到一条消息,暗示该值错误,而不是我的实际密码。我确保在bash_profile中将环境变量设置为我的实际密码,并且当我在设置文件中硬编码我的密码时,电子邮件成功发送

这意味着在尝试将密码作为环境变量检索时出现问题

设置.py

import os
# me trying to retrieve password
EMAIL_HOST_PASSWORD = os.environ.get('email_password')
有人知道这个问题吗?多谢各位

我确保在bash_概要文件中将环境变量设置为我的实际密码

如果您遵循最佳实践并在虚拟环境中运行Django,那么它有一组不同的环境变量。我怀疑如果您将设置更改为
os.environ['email\u password']
,您将得到一个
KeyError
,因为该环境变量未设置

导出环境变量的方法有很多,但为了向自己证明这就是问题所在,请在启用虚拟环境的情况下在命令行中导出值,然后运行项目并尝试发送电子邮件

编辑

由于您使用的是pipenv,您只需在项目的根目录中添加一个.env文件,当您激活虚拟环境时,pipenv将自动为您设置这些环境变量

.env

SECRET_KEY=asolidsecretkey
email_password=somesecurepassword
...

我正在使用一个虚拟环境(pipenv)的方法工作!在命令行中键入时,电子邮件被发送。但是我如何永久设置此环境变量而不必在命令行中输入?您能否提供至少一种使用Django执行此操作的方法?谢谢。但是当我使用os.environ['email_password']时,它也能很好地工作。没有键错误。我可以用这个方法代替吗?