2012-09-18 55 views
1

我是一个总编程n00b,刚开始学习django。我已经能够使用SQLite完成任务,但是我一直在使用PostgreSQL完全停滞......我一直在通过Stackoverflow和其他地方查看几个小时,并且一直无法找到一个好的答案。Postgresql Psycopg2

我的settings.py文件:在终端

DATABASES = { 
    'default': { 
     'ENGINE': 'django.db.backends.postgresql_psycopg2', 
     'NAME': 'mydb', 
     'USER': 'user', 
     'PASSWORD': 'passwd', 
     'HOST': 'localhost', 
     'PORT': '', 
} 

}

命令来运行:

$ python manage.py validate  

端子输出:

Traceback (most recent call last): 
File "manage.py", line 10, in <module> 
execute_from_command_line(sys.argv) 
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/core/management/__init__.py", line 443, in execute_from_command_line 
utility.execute() 
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/core/management/__init__.py", line 382, in execute 
self.fetch_command(subcommand).run_from_argv(self.argv) 
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/core/management/base.py", line 196, in run_from_argv 
self.execute(*args, **options.__dict__) 
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/core/management/base.py", line 232, in execute 
output = self.handle(*args, **options) 
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/core/management/base.py", line 371, in handle 
return self.handle_noargs(**options) 
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/core/management/commands/validate.py", line 9, in handle_noargs 
self.validate(display_num_errors=True) 
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/core/management/base.py", line 266, in validate 
num_errors = get_validation_errors(s, app) 
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/core/management/validation.py", line 23, in get_validation_errors 
from django.db import models, connection 
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/db/__init__.py", line 40, in <module> 
backend = load_backend(connection.settings_dict['ENGINE']) 
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/db/__init__.py", line 34, in __getattr__ 
return getattr(connections[DEFAULT_DB_ALIAS], item) 
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/db/utils.py", line 92, in __getitem__ 
backend = load_backend(db['ENGINE']) 
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/db/utils.py", line 24, in load_backend 
return import_module('.base', backend_name) 
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/utils/importlib.py", line 35, in import_module 
__import__(name) 
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/db/backends/postgresql_psycopg2/base.py", line 13, in <module> 
from django.db.backends.postgresql_psycopg2.creation import DatabaseCreation 
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/db/backends/postgresql_psycopg2/creation.py", line 1, in <module> 
import psycopg2.extensions 
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/psycopg2/__init__.py", line 67, in <module> 
from psycopg2._psycopg import BINARY, NUMBER, STRING, DATETIME, ROWID 
ImportError: dlopen(/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/psycopg2/_psycopg.so, 2): Symbol not found: _PQbackendPID 
Referenced from: /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/psycopg2/_psycopg.so 
Expected in: dynamic lookup 
+0

是否安装psycopg2? –

+1

您是否安装了'psycopg2'?它看起来像是抱怨缺少一些符号......一个'pip install psycopg2'应该纠正那个...... – tkone

+0

你可能会缺少PostgreSQL库。如果你安装了* MacPorts *,* pyscopg2 * [下载页面](http://www.initd.org/psycopg/download/)建议从* MacPorts *安装二进制软件包:'sudo port install py27-psycopg2 '应该包括所有必需的依赖关系。 –

回答

0

读取错误,我不要以为这是一个cas没有安装psycopg2的e,但由于它没有正确加载。这里不对劲。

我会确保你已经安装了libpq(postgresql客户端库)以及相关的头文件。那么我会删除psycopg2并尝试再次安装。

如果失败,请确保头文件与您安装的libpq版本相同。这听起来像是你遇到了预期的符号导出不存在的问题,这表明可能的库版本问题。

1

默认情况下,psycopg2不会在OSX上正确编译。

维护者建议您尽可能使用Fink或Macports的版本(http://initd.org/psycopg/install/)。

如果你想/需要从源代码安装,他们提供了这些链接,避开常见的问题:http://initd.org/psycopg/articles/2010/11/11/links-about-building-psycopg-mac-os-x/

IIRC,来处理这个最好的方法是:

  • 设置环境瓦尔以确保如果您执行pip/easy_install(它具有您正在构建的postgresql客户端/服务器的所有配置信息),或者手动在setup.cfg中手动记录它,则可以选择正确的pg_config二进制文件。

  • 设置环境变量以便为您的osx安装显式设置正确的ARCHFLAGS。有时python会尝试在32位安装上构建64位,反之亦然。

  • 新安装有民润与中的libssl问题,我从来没有遇到过那些