python - 加载psycopg2模块时出现"undefined symbol: _PyObject_NextNotImplemented"错误

标签 python django wsgi psycopg2

environment: Ubuntu 10.04 LTS
build Python 2.7.2 with ./configure --with-zlib --enable-unicode=ucs4
postgresql-9.0
wsgi
Django 1.3
virtualenv
apache

我正在尝试构建 Ubuntu Django 应用服务器。安装完成,没有错误消息。确切的安装方法在 Ubuntu 11.04 上是成功的。 但是,当在 Ubuntu 10.04 上完成安装并尝试从 Django 加载 psycopg2 时,我收到以下错误(我在 11.04 上没有收到此错误):

File "/home/nreeves/venv/lib/python2.7/site-packages/django/db/backends/postgresql_psycopg2/base.py", line 24, in <module>
raise ImproperlyConfigured("Error loading psycopg2 module: %s" % e)
ImproperlyConfigured: Error loading psycopg2 module: /home/nreeves/venv/lib/python2.7/site-packages/psycopg2/_psycopg.so: undefined symbol: _PyObject_NextNotImplemented

我的猜测是某些与库的链接不正确...但我不知道从哪里开始...我有以下输出 - 不确定这是否对您有帮助...

$ ldd /home/nreeves/venv/lib/python2.7/site-packages/psycopg2/_psycopg.so

linux-gate.so.1 =>  (0xb77da000)
libpq.so.5 => /usr/lib/libpq.so.5 (0xb7788000)
libpthread.so.0 => /lib/tls/i686/cmov/libpthread.so.0 (0xb776f000)
libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0xb7614000)
libssl.so.0.9.8 => /lib/i686/cmov/libssl.so.0.9.8 (0xb75cc000)
libcrypto.so.0.9.8 => /lib/i686/cmov/libcrypto.so.0.9.8 (0xb747a000)
libkrb5.so.3 => /usr/lib/libkrb5.so.3 (0xb73c9000)
libcom_err.so.2 => /lib/libcom_err.so.2 (0xb73c5000)
libgssapi_krb5.so.2 => /usr/lib/libgssapi_krb5.so.2 (0xb7395000)
libldap_r-2.4.so.2 => /usr/lib/libldap_r-2.4.so.2 (0xb734e000)
/lib/ld-linux.so.2 (0xb77db000)
libdl.so.2 => /lib/tls/i686/cmov/libdl.so.2 (0xb734a000)
libz.so.1 => /lib/libz.so.1 (0xb7335000)
libk5crypto.so.3 => /usr/lib/libk5crypto.so.3 (0xb7311000)
libkrb5support.so.0 => /usr/lib/libkrb5support.so.0 (0xb7308000)
libkeyutils.so.1 => /lib/libkeyutils.so.1 (0xb7304000)
libresolv.so.2 => /lib/tls/i686/cmov/libresolv.so.2 (0xb72f0000)
liblber-2.4.so.2 => /usr/lib/liblber-2.4.so.2 (0xb72e3000)
libsasl2.so.2 => /usr/lib/libsasl2.so.2 (0xb72cb000)
libgnutls.so.26 => /usr/lib/libgnutls.so.26 (0xb722f000)
libtasn1.so.3 => /usr/lib/libtasn1.so.3 (0xb721e000)
libgcrypt.so.11 => /lib/libgcrypt.so.11 (0xb71ab000)
libgpg-error.so.0 => /lib/libgpg-error.so.0 (0xb71a6000)

下面的命令输出:

$ ls -l  /usr/lib/libpq*

-rw-r--r-- 1 root root 224904 2011-09-26 06:33 /usr/lib/libpq.a
lrwxrwxrwx 1 root root     12 2011-09-26 10:51 /usr/lib/libpq.so -> libpq.so.5.4
lrwxrwxrwx 1 root root     12 2011-09-26 10:51 /usr/lib/libpq.so.5 -> libpq.so.5.4
-rw-r--r-- 1 root root 150976 2011-09-26 06:33 /usr/lib/libpq.so.5.4

在我看来,一切都是正确的。任何建议将不胜感激。

最佳答案

您提到“wsgi”作为标签。如果这意味着您正在使用 Apache/mod_wsgi,那么请注意 mod_wsgi 必须针对相同的 Python 版本/安装进行编译,并且您需要验证 mod_wsgi 在运行时选择了相同的 libpython.so,因为 mod_wsgi 决定了 Python图书馆链接。

关于python - 加载psycopg2模块时出现"undefined symbol: _PyObject_NextNotImplemented"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7561221/

相关文章:

python - 如何按索引连接数组的数组?

Python:截断的日志记录级别名称(字符串格式)自定义

python - mongoengine max_distance 查询的数据库错误

python - 在 wsgi.py 中无法访问环境变量

python - 如何获取两个列表中整数和运算的所有组合?

python - 设置 DEBUG 环境变量时,如何禁用 numba 调试日志记录?

python - tastypie 中的外键

python - Django 3 'NoReverseMatch 在/post/1/

python - 通过 Google App Engine 上的 Bottle 启用 Beaker SessionMiddleware

python - 我应该为 aiohttp 和 sanic 等异步框架使用单独的 WSGI 服务器吗?