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

Posted

技术标签:

【中文标题】我已经安装了 python-dotenv 但 python 找不到它【英文标题】:I have installed python-dotenv but python cannot find it 【发布时间】:2020-03-15 12:50:56 【问题描述】:

我在烧瓶项目中使用 dotenv,并且还在简化的测试环境中对其进行了测试。我已经尝试卸载和重新安装等,但python找不到dotenv模块。

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

当我运行代码时,我得到一个找不到模块的错误,说它找不到 dotenv。代码是

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

错误是

感激地接受任何建议。

【问题讨论】:

【参考方案1】:

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

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

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

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

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

【讨论】:

您也可以尝试运行python -m pip install python-dotenv(或python3 -m pip ...。我发现有时pip & python 命令会在不同的环境中运行。 谢谢,我试过卸载dotenv和python-dotenv。结果是 dotenv 没有安装在第一个地方,python-dotenv 被卸载,然后重新安装成功,但问题仍然存在。我还尝试再次卸载 python-dotenv 并使用python -m pip install python-dotenv 重新安装,问题仍然存在。我已将我的代码和错误添加到我的问题中。 你的虚拟环境在你运行Flask的时候确定激活了吗?【参考方案2】:

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

第一个问题

作为相当新的,我不太清楚我安装的 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')

【讨论】:

非常感谢! 'conda install -c conda-forge python-dotenv' - 这也为我解决了问题!【参考方案3】:

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

flask run -p 3000

我从 here 那里得到建议。

python -m flask run [OPTIONS]

例子:

python -m flask run -p 3000

它对我有用。谢谢。

【讨论】:

以上是关于我已经安装了 python-dotenv 但 python 找不到它的主要内容,如果未能解决你的问题,请参考以下文章

我已经安装了所有的先决条件 - python3(3.8.2), pip3, php, wget. 但还是无法启动HiddenEye.py.面临以下问题

为 Python 3.6 安装 py3cairo

python-dotenv简单使用

尽管已安装,但无法在 .py 脚本中导入 plotly.express

python-dotenv的使用

Manage.py:未知命令:“迁移”