Mar*_*ink 4 python flask dotenv
我在一个烧瓶项目中使用 dotenv,并且也在一个简化的测试环境中进行了测试。我试过卸载和重新安装等,但 python 找不到 dotenv 模块。
启动烧瓶时,它看到有一些 .env 文件,并告诉我安装 dotenv 即使它已安装,我也可以在烧瓶系统库中看到它。
当我运行代码时,我收到一个模块未找到错误,说它找不到 dotenv。代码是
import os
from dotenv import load_dotenv
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
Run Code Online (Sandbox Code Playgroud)
错误是
任何建议都感激地接受。
小智 11
您可能还安装了“dotenv”软件包。
在您的虚拟环境中,尝试:
pip uninstall dotenv
pip uninstall python-dotenv
pip install python-dotenv
Run Code Online (Sandbox Code Playgroud)
此外,您可能在系统级别(在虚拟环境之外)安装了 dotenv。如果是,您可以尝试卸载它。
如果这不是问题,请发布您的代码和由此产生的错误。
事实证明,我的代码存在许多问题,我将在此处简要列出,以防其他人遇到相同的问题。
作为一个相当新的人,我不太清楚我安装的 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')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16361 次 |
| 最近记录: |