django 应用程序的 Heroku 推送获取“没有名为 psycopg2.extensions 的模块”

2024-04-19

我正在尝试将 django 应用程序推送到 heroku 并收到一个我在 heroku 或 stackoverflow 论坛中从未见过的错误。我正在使用 postgres。

我不知道该从哪里开始;我在任何文档中都没有看到任何说明问题的内容。主要错误是:

导入错误:没有名为 psycopg2.extensions 的模块

...但是heroku的配置是将其设置为引擎,我不知道如何通过它。

我与 heroku 的对话,以确保它了解 postgres

$ heroku addons:add heroku-postgresql:dev
Adding heroku-postgresql:dev on morning-crag-1585... done, v24 (free)
Attached as HEROKU_POSTGRESQL_OLIVE_URL
Database has been created and is available
 ! This database is empty. If upgrading, you can transfer
 ! data from another database with pgbackups:restore.
.
Use `heroku addons:docs heroku-postgresql:dev` to view documentation.
$ heroku pg:wait 
$ heroku config | grep HEROKU_POSTGRESQL
HEROKU_POSTGRESQL_OLIVE_URL: postgres://<blah-blah-blah>@ec2-<ip-address>.compute-1.amazonaws.com:5432/<blah-blah>
$ heroku pg:promote HEROKU_POSTGRESQL_OLIVE_URL
Promoting HEROKU_POSTGRESQL_OLIVE_URL to DATABASE_URL... done

我的要求.txt:

Django==1.4.2
wsgiref==0.1.2
dj-database-url==0.2.1

我的 settings.py 中的片段:

print "Got here before!\n"
try:
  import dj_database_url
  DATABASES = { 'default': dj_database_url.config(default='postgres://localhost') }
except:
  print "Unexpected error:", sys.exc_info()

print DATABASES

当我推送到heroku时,我从heroku logs:

heroku[slugc]: Slug compilation finished
heroku[web.1]: Starting process with command `python ./manage.py runserver 0.0.0.0:30550 --noreload`
app[web.1]: Got here before!
app[web.1]: 
app[web.1]: {'default': {'ENGINE': 'django.db.backends.postgresql_psycopg2', 'NAME': '<blah blah>', 'HOST': 'ec2-<iip-address>.compute-1.amazonaws.com', 'USER': '<blah blah>', 'PASSWORD': '<blah>', 'PORT': 5432}}
app[web.1]: 
app[web.1]: Validating models...
app[web.1]: Traceback (most recent call last):
app[web.1]:   File "./manage.py", line 10, in <module>
app[web.1]:     execute_from_command_line(sys.argv)
app[web.1]:     utility.execute()
app[web.1]:     self.execute(*args, **options.__dict__)
app[web.1]:   File "/app/.heroku/venv/lib/python2.7/site-packages/django/core/management/base.py", line 196, in run_from_argv
app[web.1]:     self.fetch_command(subcommand).run_from_argv(self.argv)
app[web.1]:   File "/app/.heroku/venv/lib/python2.7/site-packages/django/core/management/__init__.py", line 443, in execute_from_command_line
app[web.1]:   File "/app/.heroku/venv/lib/python2.7/site-packages/django/core/management/__init__.py", line 382, in execute
app[web.1]:   File "/app/.heroku/venv/lib/python2.7/site-packages/django/core/management/base.py", line 232, in execute
app[web.1]:     self.inner_run(*args, **options)
app[web.1]:     self.validate(display_num_errors=True)
app[web.1]:   File "/app/.heroku/venv/lib/python2.7/site-packages/django/core/management/commands/runserver.py", line 91, in inner_run
app[web.1]:     num_errors = get_validation_errors(s, app)
app[web.1]:     self.run(*args, **options)
app[web.1]:   File "/app/.heroku/venv/lib/python2.7/site-packages/django/db/utils.py", line 92, in __getitem__
app[web.1]:     output = self.handle(*args, **options)
app[web.1]:   File "/app/.heroku/venv/lib/python2.7/site-packages/django/core/management/validation.py", line 23, in get_validation_errors
app[web.1]:   File "/app/.heroku/venv/lib/python2.7/site-packages/django/utils/importlib.py", line 35, in import_module
app[web.1]:     from django.db import models, connection
app[web.1]:     return import_module('.base', backend_name)
app[web.1]:     __import__(name)
app[web.1]: ImportError: No module named psycopg2.extensions
app[web.1]:     return getattr(connections[DEFAULT_DB_ALIAS], item)
app[web.1]:   File "/app/.heroku/venv/lib/python2.7/site-packages/django/db/backends/postgresql_psycopg2/creation.py", line 1, in <module>
app[web.1]:     backend = load_backend(db['ENGINE'])
app[web.1]:     import psycopg2.extensions
app[web.1]:   File "/app/.heroku/venv/lib/python2.7/site-packages/django/db/__init__.py", line 40, in <module>
app[web.1]:   File "/app/.heroku/venv/lib/python2.7/site-packages/django/core/management/commands/runserver.py", line 69, in handle
app[web.1]:   File "/app/.heroku/venv/lib/python2.7/site-packages/django/core/management/commands/runserver.py", line 80, in run
app[web.1]:   File "/app/.heroku/venv/lib/python2.7/site-packages/django/db/utils.py", line 24, in load_backend
app[web.1]:   File "/app/.heroku/venv/lib/python2.7/site-packages/django/core/management/base.py", line 266, in validate
app[web.1]:   File "/app/.heroku/venv/lib/python2.7/site-packages/django/db/__init__.py", line 34, in __getattr__
app[web.1]:     backend = load_backend(connection.settings_dict['ENGINE'])
app[web.1]:     from django.db.backends.postgresql_psycopg2.creation import DatabaseCreation
app[web.1]:   File "/app/.heroku/venv/lib/python2.7/site-packages/django/db/backends/postgresql_psycopg2/base.py", line 13, in <module>
heroku[web.1]: Process exited with status 1
heroku[web.1]: State changed from starting to crashed

您需要添加psycopg2安装到您的requirements.txt文件。它是数据库适配器——Python 与 PostgreSQL 的接口方式,你确实不需要安装,因为 heroku 需要安装。

只需添加一行psycopg2==2.4.4给你的requirements.txt file.

顺便说一句,数据库附加组件本身并不是必需的。dj-database-url自动处理它。查看Heroku 文档 https://devcenter.heroku.com/articles/django获取分步指南。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

django 应用程序的 Heroku 推送获取“没有名为 psycopg2.extensions 的模块” 的相关文章

  • 对所有列实施搜索过滤器

    我在 PostgreSQL 中找到了这个搜索示例http www postgresql org docs current interactive textsearch tables html TEXTSEARCH TABLES SEARCH
  • Django 模板文件夹

    我正在尝试 Django 并弄清楚如何设置urls py 以及 URL 如何工作 我已经配置了urls py在项目的根目录中 定向到我的博客和管理员 但现在我想向我的主页添加一个页面 所以在localhost 8000 所以我将以下代码添加
  • 在 Postgres 中使用 copy 命令时出错(错误:日期类型的输入语法无效:“”)

    我有一个 CSV 文件 我试图从中使用 PostgresCOPY命令以便从该 CSV 文件填充表 表列之一NEXT VISIT属于日期 data type CSV 文件中本应进入此日期列的某些相应字段具有空值 正在运行的复制命令如下所示 C
  • 按 IN 值列表排序

    我在 PostgreSQL 8 3 中有一个简单的 SQL 查询 它捕获了一堆评论 我提供一个sorted的值列表IN构造在WHERE clause SELECT FROM comments WHERE comments id IN 1 3
  • string_agg 没有函数与给定名称匹配

    我有关系数据库并想使用string agg 因为它似乎适合我的需要 I want product id quiz id 1 1 6 2 2 7 3 3 8 4 4 这是我的数据库 select quiz id product id last
  • 检测递归查询中的循环

    我的 PostgreSQL 数据库中有一个有向图 节点和循环之间可以有多个路径 create table edges from int to int insert into edges values 0 1 1 2 2 3 3 4 1 3
  • 如何处理 Django 嵌套模板标签

    如何处理模板标记 内的变量 我需要为我的函数 send mail view 提供参数 urls py urlpatterns path send mail view
  • postgres 与 docker compose 给出 FATAL: role "root" does not exit 错误

    我正在尝试在具有 docker 桌面的本地 Windows 计算机上使用 postgres 创建一个简单的演示 这是我的 yaml docker compose 文件 名为img yaml version 3 6 services post
  • Heroku:无法访问该网站

    我的 heroku 应用程序在构建后无法访问 日志显示 Web 服务器节点和工作节点都在监听 这是一个由 Gunicorn 运行的 Flask 应用程序 它有 2 个插件 newrelic 和 redistogo Error This si
  • Django ModelForm 不保存数据

    我已经尝试过以下帖子中的解决方案 从 ModelForm 保存数据 https stackoverflow com questions 13046488 saving data from modelform 没起作用 ModelForm数据
  • 表名或列名不能以数字开头?

    我尝试创建名为15909434 user语法如下 CREATE TABLE 15909434 user 这当然会产生错误 然后 在我尝试用谷歌进行一些研究后 我发现了一篇很好的文章here http www informit com art
  • 在 TypeORM 单表继承中更新实体的类型

    有没有办法将继承实体的类型 在数据库中 更改为不同的实体类型 转换实体为uid from OldType to NewType await em update OldType uid uid entityTypeColumnName New
  • 了解 django admin readonly_fields

    我创建了一些代码来区分 Django admin 中的两个用户组 从而导致显示所有字段为只读或仅显示其中的一些字段 这些字段直接在 ModelAdmin 类中设置 首先这是代码 class PersonAdmin admin ModelAd
  • 如何在ModelAdmin中使用InlinePanel?

    我正在设置一个需要使用多个子模型实例创建的模型 我希望能够在管理界面中编辑和创建此模型 因此我使用以下命令添加它ModelAdmin http docs wagtail io en v1 9 reference contrib modela
  • 如何将 Mercurial 存储库克隆到已存在的目录中?

    我有一个客户的 Django 项目 正在本地开发 使用 Mercurial 进行版本控制 我将本地存储库推送到我的个人远程服务器 我保存所有项目的地方 然后当我部署它时 在任何 Web 服务器上 我从我的个人服务器克隆该存储库 这在大多数服
  • 向 ModelForm 添加额外字段

    我正在向 Django ModelForm 添加一个额外的字段 如下所示 class form forms ModelForm extra field forms CharField label Name of Institution cl
  • 未知的 Heroku 错误

    我尝试在 heroku 上运行应用程序时遇到以下错误 2011 06 03T11 24 25 07 00 heroku nginx GET HTTP 1 1 2011 06 03T18 24 37 00 00 heroku router E
  • 是否可以在 django 模板中检查对象是否包含在列表中

    我对 django 很陌生 大约一周了 我正在制作一个网站 用户可以在其中输入内容 然后其他用户可以投票决定他们是否喜欢这些内容 我知道这并不是那么新颖 但这是一个学习一堆工具的好项目 我有一个多对多表来存储谁喜欢或不喜欢什么 在渲染页面之
  • Django 管理中的嵌套内联?

    好吧 我有一个相当简单的设计 class Update models Model pub date models DateField title models CharField max length 512 class Post mode
  • 错误:这些包与需求文件中的哈希值不匹配。更新 Django 时

    我有 Django 2 2 7 现在我想安装 Django 3 0 2 我读到我需要运行命令pip install U Django更新它 但是当我尝试时它显示此错误消息 ERROR THESE PACKAGES DO NOT MATCH

随机推荐