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

I have installed python-dotenv but python cannot find it

我在一个 flask 项目中使用 dotenv,并且也在一个简化的测试环境中对此进行了测试。我已尝试卸载并重新安装等,但无法通过 python.

找到 dotenv 模块

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

当我 运行 编码时,我收到一个模块未找到错误,提示它找不到 dotenv。密码是

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

错误是

感谢接受任何建议。

您可能还安装了 "dotenv" 软件包。

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

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

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

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

原来我的代码有很多问题,我会在这里简要列出它们,以防其他人遇到同样的问题。

第一个问题

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

为了修复 dotenv,我用 pip 尝试了各种 install/uninstalls,我可以看到 dotenv was 已经安装了!那没有用。起作用的是在我的命令提示符下使用 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')

我也有这样的问题。在此之前,我 运行 Flask 应用程序遵循以下命令:

flask run -p 3000

我从 here 那里得到建议。

python -m flask run [OPTIONS]

示例:

python -m flask run -p 3000

对我有用。谢谢