亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

將 Django 部署到 Heroku 時:ModuleNotFoundError:

將 Django 部署到 Heroku 時:ModuleNotFoundError:

MMMHUHU 2023-07-27 16:11:58
將 Django 部署到 Heroku 時,出現錯誤ModuleNotFoundError: No module named 'dotenv'。但是,我的requirements.txt 中確實列出了python-dotenv。所以我很困惑為什么 Heroku 對 dotenv 不滿意。這是我的要求.txt:cffi==1.14.2cryptography==3.1dj-database-url==0.5.0Django==3.1.1django-cors-headers==3.5.0django-heroku==0.3.1django-rest-knox==4.1.0django-simple-email-confirmation==0.70djangorestframework==3.11.1gunicorn==20.0.4psycopg2==2.8.6pycparser==2.20python-dotenv==0.14.0pytz==2020.1six==1.15.0sqlparse==0.3.1whitenoise==5.2.0
查看完整描述

4 回答

?
米琪卡哇伊

TA貢獻1998條經驗 獲得超6個贊

嘗試使用 django-dotenv 而不是使用 python-dotenv

不確定 settings.py 中有哪些導入內容,但請嘗試以下操作:

# settings.py
import os
SECRET_KEY = os.getenv('SECRET_KEY')

如果您嘗試在設置文件頂部導入 dotenv,則可能需要將其刪除。

另請記住在 Heroku 應用程序設置下的“配置變量”中添加這些環境變量。在您推送到 Heroku 之前,這些應該已經存在。


查看完整回答
反對 回復 2023-07-27
?
PIPIONE

TA貢獻1829條經驗 獲得超9個贊

dotenv的目的是“從 .env 文件中讀取鍵值對并將它們設置為環境變量”

通常,擁有文件的目的.env是提供一種在本地管理環境的便捷方法。

通常這不會被簽入版本控制(即它列在.gitignore中)。好處是:

  • 你的敏感環境變量不能被別人看到

  • 在生產中,您可能希望能夠更改這些變量而無需重新部署

  • 不同的人可以在不同的環境中運行應用程序

因此,當您部署到 Heroku 時,您通常不包含您的.env,因此dotenv無需執行任何操作。

相反,Heroku 有自己的管理環境變量的方法。

這就留下了在代碼中做什么的問題,嘗試調用dotenvHeroku 會出現您所描述的錯誤。

一種選擇是僅在環境不是生產環境時加載它。像這樣的東西:

import os


if not os.environ.get("PRODUCTION"):

? ? from dotenv import load_dotenv


? ? load_dotenv()

請注意,您需要PRODUCTION在 Heroku 上設置環境變量,或者選擇一個已經存在的變量。


查看完整回答
反對 回復 2023-07-27
?
慕尼黑的夜晚無繁華

TA貢獻1864條經驗 獲得超6個贊

嘗試卸載該軟件包并重新下載并檢查它是否在requirements.txt文件中。



查看完整回答
反對 回復 2023-07-27
?
鴻蒙傳說

TA貢獻1865條經驗 獲得超7個贊

我不知道這是否有幫助,但我在部署到 Heroku 時遇到了這個錯誤,但就我而言,我使用的是 pipelinenv,問題是我所做的要求或任何導入都是在 pip install 而不是 pipelinenv 中安裝的安裝,一旦我在那里完成了所有安裝,它就起作用了,我不記得是否做了類似pipenv freeze>requirements.txt之類的事情



查看完整回答
反對 回復 2023-07-27
  • 4 回答
  • 0 關注
  • 387 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號