【问题标题】:How can I push Django code using dj-database-url, psycopg2 to Heroku?如何使用 dj-database-url、psycopg2 将 Django 代码推送到 Heroku?
【发布时间】:2020-05-04 11:02:19
【问题描述】:

我目前正在 Django 中构建一个 Web 项目,并致力于让该站点为部署做好准备。我最初使用 Sqlite3 将站点部署在 Heroku 上,我的数据库代码设置如下:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}

但是,由于 Heroku 的临时文件系统,我意识到我需要切换到 Postgres。在遵循了一些不同的指南之后,我对我的设置进行了以下更改。我首先删除了上面提到的“DATABASES”并用以下内容替换它:

import dj_database_url, psycopg2

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': *************,                      
        'USER': **************,
        'PASSWORD': ************************************,
        'HOST': *********************,
        'PORT': '5432',
    }
}

db_from_env = dj_database_url.config(conn_max_age=500)
DATABASES['default'].update(db_from_env)

当我进行这些更改时,一切都在本地 Django 开发服务器 (127.0.0.1:8000) 上完美运行,但是一旦我通过 Git 和 Heroku 推送更改,我尝试在 Heroku 上打开我的网站并得到“应用程序错误”和检查我的日志的建议。哪个报告“ModuleNotFoundError:没有名为 dj_database_url 的模块”以及类似地我尝试上传到 Heroku 的任何外部库似乎都有这个问题。如何解决此问题并将我的网站投入生产?任何帮助将不胜感激。

【问题讨论】:

    标签: python django heroku pip


    【解决方案1】:

    You need to include them in your requirements.txt file 或者您正在使用的 buildpack 需要指示应用程序依赖项。

    【讨论】:

    • 如您所见,它们在我的 requirements.txt 文件中。注意我删除了需求文件中的一些行以便有足够的评论空间,但它们都在那里。然而仍然有错误 dj-database-url==0.5.0 Django==2.2 django-crispy-forms==1.7.2 django-heroku==0.3.1 pandas==0.25.1 pathspec==0.5.9 pipenv ==2018.11.26 psycopg2==2.8.4 psycopg2-binary==2.8.4 pylint==2.3.1 pylint-django==2.0.11 pylint-plugin-utils==0.5 pypiwin32==223 python-dateutil== 2.8.0 python-dotenv==0.10.3 pytz==2019.2 pywin32==226 soupsieve==1.9.3 sqlparse==0.3.0 virtualenv==16.7.4 virtualenv-clone==0.5.3
    • 您的需求文件是否包含在您的存储库中?它会被推到heroku吗?您可以通过使用heroku run bash 打开 bash shell 来验证后者,然后在 shell 中运行 ls 以查看存在哪些文件。
    • 它说 requirements.txt 在我的存储库中。我认为这可能与安装它们的环境有关...我不认为它们是在虚拟环境中添加的,但是 pipenv 和库位于我的 Desktop/lib/site-packages 文件夹中,这与我一直在做我的项目的位置(称为桌面/新闻)。我不确定如何“备份”虚拟环境和/或将 dj_database_url 和 psycopg2 从 lib/sitepackages 获取到我需要的位置 - 桌面或我的项目顶级目录??
    猜你喜欢
    • 2012-06-07
    • 1970-01-01
    • 1970-01-01
    • 2013-01-12
    • 1970-01-01
    • 2012-11-23
    • 2012-07-22
    • 1970-01-01
    • 2013-09-11
    相关资源
    最近更新 更多