首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >django应用程序的Heroku push获得了“没有名为心理学2扩展的模块”

django应用程序的Heroku push获得了“没有名为心理学2扩展的模块”
EN

Stack Overflow用户
提问于 2012-11-29 06:27:03
回答 4查看 8.2K关注 0票数 9

我试图将django应用程序推送到heroku,并得到一个在heroku或堆栈溢出论坛中没有看到的错误。我在用postgres。

我不知道该往哪里走;我在任何一个说明出了什么问题的文档中都没有看到任何东西。主要错误是:

ImportError:没有名为内核的模块。扩展

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

我和heroku的谈话是为了确保它知道postgres的事

代码语言:javascript
复制
$ 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

我的requirements.txt:

代码语言:javascript
复制
Django==1.4.2
wsgiref==0.1.2
dj-database-url==0.2.1

我的settings.py上的一个片段:

代码语言:javascript
复制
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那里得到这个

代码语言:javascript
复制
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
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-11-29 07:02:26

您需要将psycopg2安装添加到requirements.txt文件中。这是数据库适配器--因为heroku确实不需要安装python与PostgreSQL的接口方式。

只需将行psycopg2==2.4.4添加到requirements.txt文件中即可。

顺便说一句,数据库附加本身并不是必要的.dj-database-url会自动处理它。查看heroku docs以获得一步一步的指南。

票数 20
EN

Stack Overflow用户

发布于 2021-10-17 11:28:17

我安装了两个二进制程序。

代码语言:javascript
复制
pip install psycopg2-binary

添加到requirements.txt文件中。

提交并推送代码,它起作用了。

票数 2
EN

Stack Overflow用户

发布于 2019-02-20 12:40:18

我遵循公认的答案,但它不断给我同样的错误,一次又一次。因此,我不得不更改我的requirements.txt文件。出发地:psycopg2==2.7.7至:psycopg2-binary

现在它正在完美地工作,fine.For更多的细节可以转到doc:http://initd.org/psycopg/docs/install.html#binary-install-from-pypi

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13620051

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档