【问题标题】:in __getitem__ raise KeyError(key) from None在 __getitem__ 中从 None 提高 KeyError(key)
【发布时间】:2019-10-07 11:47:26
【问题描述】:

我目前正在关注一个教程,其中数据库密码被隐藏/激活为环境激活文件中的变量。在 Django local_settings.py 中,密码应该是这样检索的:

"PASSWORD": os.environ['DATABASE_PW'],

但是,这给了我错误:

  File "<frozen importlib._bootstrap>", line 1006, in _gcd_import
  File "<frozen importlib._bootstrap>", line 983, in _find_and_load
  File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 677, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 728, in exec_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "C:\Users\User\Desktop\blog\project\project\settings.py"
, line 325, in <module>
    exec(open(f, "rb").read())
  File "<string>", line 21, in <module>
  File "C:\Users\User\Envs\blog\lib\os.py", line 678, in __getitem__
    raise KeyError(key) from None
KeyError: 'DATABASE_PW'

在环境激活文件中,密码保存为:

export DATABASE_PW = 'dbpass'

设置密码时服务器没有运行,尝试运行python manage.py runserver时出现错误。

在尝试运行服务器之前,我还停用并重新激活了环境。

让它发挥作用还缺少什么?

【问题讨论】:

  • 如果我没记错的话,export 不喜欢= 周围的空格。尝试删除空格并再次运行它
  • 也许可以在前面的一行尝试print(os.environ),看看一切是否如您所愿。
  • 您应该更改标题或提出新问题。
  • 现在您的环境变量已正确导出,您应该在 db 控制台中授予对 user 的访问权限

标签: python django


【解决方案1】:

由于我是在windows上运行的,所以在环境激活文件中激活隐藏变量的正确方法是放在activate.bat文件中。

我在底部的 .bat 文件中这样设置我的:

set DATABASE_PW=dbpass

而且它有效。如果您在 linux 或 mac 上运行,如果您打算这样做,则需要使用正确的激活文件。

【讨论】:

    猜你喜欢
    • 2018-01-10
    • 2020-11-20
    • 1970-01-01
    • 1970-01-01
    • 2019-05-01
    • 2022-12-12
    • 1970-01-01
    • 2018-06-23
    • 2021-05-06
    相关资源
    最近更新 更多