的Django到PostgreSQL:错误加载psycopg2
问题描述:
试图runserver
与db['ENGINE'] = 'django.db.backends.psycopg2'
我:的Django到PostgreSQL:错误加载psycopg2
[...]
File "/usr/local/lib/python2.6/dist-packages/django/db/backends/psycopg2/__init__.py", line 67, in <module>
from psycopg2._psycopg import BINARY, NUMBER, STRING, DATETIME, ROWID
File "/usr/local/lib/python2.6/dist-packages/psycopg2-2.4.4-py2.6-linux-x86_64.egg/psycopg2/__init__.py", line 67, in <module>
from psycopg2._psycopg import BINARY, NUMBER, STRING, DATETIME, ROWID
ImportError: /usr/local/lib/python2.6/dist-packages/psycopg2-2.4.4-py2.6-linux-x86_64.egg/psycopg2/_psycopg.so: undefined symbol: Py_InitModule4_64
与'ENGINE': 'django.db.backends.postgresql_psycopg2'
我:
[...]
File "/usr/local/lib/python2.6/dist-packages/django/utils/importlib.py", line 35, in import_module
__import__(name)
File "/usr/local/lib/python2.6/dist-packages/django/db/backends/postgresql_psycopg2/base.py", line 24, in <module>
raise ImproperlyConfigured("Error loading psycopg2 module: %s" % e)
django.core.exceptions.ImproperlyConfigured: Error loading psycopg2 module: /usr/local/lib/python2.6/dist-packages/psycopg2-2.4.4-py2.6-linux-x86_64.egg/psycopg2/_psycopg.so: undefined symbol: Py_InitModule4_64
而且我不应该与Python> 2.6使用psycopg吧?
如何做这项工作的任何帮助?
答
尝试做一个干净的石板。准备分离的virtualenv目录。
sudo apt-get install python-virtualenv # if you don't have it yet
virtualenv /some/dir/
激活VIRTUALENV
source /some/dir/bin/activate
准备Django和psycopg2和使用
pip install psycopg2 django # possibly other libraries
任何其他库,然后移动到你的项目目录(这与manage.py),确保项目在PYTHONPATH内并再次尝试./manage.py runserver
。
答
您的安装已损坏。也许你运行一个32位的Python,但库是64位。
我用Python2.7运行psycopg2没有问题。
自从我写这个答案以来,我的知识增加了,现在我强烈建议熟悉virtualenvwrapper库:https://virtualenvwrapper.readthedocs.io/en/latest/。当您进行初始设置时,通过它管理virtualenvs会更容易。 – omikron 2016-09-07 08:51:36