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

时间:2019-11-19 22:09:20

标签: python flask dotenv

我正在烧瓶项目中使用dotenv,并且还在愚蠢的测试环境中对此进行了测试。我尝试卸载并重新安装等,但是python无法找到dotenv模块。

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

This is what happens at the command line.

当我运行代码时,出现模块未找到错误,提示无法找到dotenv。代码是

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

错误是

The error message

任何建议都会被接受

2 个答案:

答案 0 :(得分:1)

可能还安装了“ dotenv”软件包。

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

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

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

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

答案 1 :(得分:0)

事实证明,我的代码存在很多问题,如果其他任何人遇到相同的问题,我将在此处简要列出。

第一个问题

作为一个相当新的人,我还不清楚我已经安装的所有python生态系统如何挂在一起。我已经安装了Anaconda和Spyder作为开发环境。但是,我一直在遵循Flask教程,该教程使用pip作为虚拟环境的安装程序。我使用的命令提示符是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')