将 Django 部署到 Heroku 时:ModuleNotFoundError:

将 Django 部署到 Heroku 时,出现错误ModuleNotFoundError: No module named 'dotenv'。但是,我的requirements.txt 中确实列出了python-dotenv。所以我很困惑为什么 Heroku 对 dotenv 不满意。


这是我的要求.txt:


cffi==1.14.2

cryptography==3.1

dj-database-url==0.5.0

Django==3.1.1

django-cors-headers==3.5.0

django-heroku==0.3.1

django-rest-knox==4.1.0

django-simple-email-confirmation==0.70

djangorestframework==3.11.1

gunicorn==20.0.4

psycopg2==2.8.6

pycparser==2.20

python-dotenv==0.14.0

pytz==2020.1

six==1.15.0

sqlparse==0.3.1

whitenoise==5.2.0


MMMHUHU
浏览 158回答 4
4回答

米琪卡哇伊

尝试使用 django-dotenv 而不是使用 python-dotenv不确定 settings.py 中有哪些导入内容,但请尝试以下操作:# settings.py import os SECRET_KEY = os.getenv('SECRET_KEY')如果您尝试在设置文件顶部导入 dotenv,则可能需要将其删除。另请记住在 Heroku 应用程序设置下的“配置变量”中添加这些环境变量。在您推送到 Heroku 之前,这些应该已经存在。

PIPIONE

dotenv的目的是“从 .env 文件中读取键值对并将它们设置为环境变量”通常,拥有文件的目的.env是提供一种在本地管理环境的便捷方法。通常这不会被签入版本控制(即它列在.gitignore中)。好处是:你的敏感环境变量不能被别人看到在生产中,您可能希望能够更改这些变量而无需重新部署不同的人可以在不同的环境中运行应用程序因此,当您部署到 Heroku 时,您通常不包含您的.env,因此dotenv无需执行任何操作。相反,Heroku 有自己的管理环境变量的方法。这就留下了在代码中做什么的问题,尝试调用dotenvHeroku 会出现您所描述的错误。一种选择是仅在环境不是生产环境时加载它。像这样的东西:import osif not os.environ.get("PRODUCTION"):    from dotenv import load_dotenv    load_dotenv()请注意,您需要PRODUCTION在 Heroku 上设置环境变量,或者选择一个已经存在的变量。

慕尼黑的夜晚无繁华

尝试卸载该软件包并重新下载并检查它是否在requirements.txt文件中。

鸿蒙传说

我不知道这是否有帮助,但我在部署到 Heroku 时遇到了这个错误,但就我而言,我使用的是 pipelinenv,问题是我所做的要求或任何导入都是在 pip install 而不是 pipelinenv 中安装的安装,一旦我在那里完成了所有安装,它就起作用了,我不记得是否做了类似pipenv freeze>requirements.txt之类的事情
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python