我已经安装了 python-dotenv 但 python 找不到它

新手上路,请多包涵

我在一个烧瓶项目中使用 dotenv,并且也在一个简化的测试环境中测试了它。我尝试卸载并重新安装等,但是 python 找不到 dotenv 模块。

当启动 flask 时,它看到有一些 .env 文件并告诉我安装 dotenv,即使它已安装并且我可以在 flasks 系统库中看到它。

这就是在命令行中发生的事情。

当我运行代码时,我收到一个模块未找到错误,指出它找不到 dotenv。代码是

import os
from dotenv import load_dotenv
from flask import Flask
from flask_sqlalchemy import SQLAlchemy

错误是

错误信息

感激地接受任何建议。

原文由 Mark Kortink 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.8k
2 个回答

您可能还安装了“dotenv”包。

在您的虚拟环境中,尝试:

 pip uninstall dotenv
pip uninstall python-dotenv
pip install python-dotenv

您也可能在系统级别(在虚拟环境之外)安装了 dotenv。如果是,您可以尝试卸载它。

如果这不是问题,请发布您的代码和由此产生的错误。

原文由 Greg Cowell 发布,翻译遵循 CC BY-SA 4.0 许可协议

事实证明,我的代码存在许多问题,我将在此处简要列出它们,以防其他人遇到同样的问题。

第一个问题

作为一个相当新的人,我不太清楚我安装的 python 生态系统是如何挂在一起的。我已经安装了 Anaconda 和 Spyder 作为我的开发环境。但是,我一直在关注使用 pip 作为虚拟环境安装程序的 Flask 教程。我使用的命令提示符是 Anaconda 自带的。一切似乎都以某种方式正常工作,直到我遇到 dotenv 问题,这实际上是整个相当大的教程中的一个小细节。

为了修复 dotenv,我正在尝试使用 pip 进行各种安装/卸载,我可以看到 已经 安装了 dotenv!那没有用。起作用的是在我的命令提示符下使用 conda 安装 dotenv,但我必须明确说明从哪里获取 dotenv。起作用的命令是

conda install -c conda-forge python-dotenv

第二个问题

安装 dotenv 后,我无法从 .env 文件设置环境变量。本教程使用 os.path.dirname(__file__) 获取当前工作目录。事实证明 __file__ 始终是小写字母,但我的目录中有一些大写字母。因此 .env 文件的绝对路径!我通过使用尊重大小写的内置 pathlib 模块修复了这个问题。这是一些代码。

 import os
from pathlib import Path
from dotenv import load_dotenv

# Get the base directory
basepath = Path()
basedir = str(basepath.cwd())
# Load the environment variables
envars = basepath.cwd() / '.env'
load_dotenv(envars)
# Read an environment variable.
SECRET_KEY = os.getenv('SECRET_KEY')

原文由 Mark Kortink 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题