安装psycopg2时出现未定义符号: PyUnicodeUCS2_Decode

5 投票
4 回答
19670 浏览
提问于 2025-04-15 21:17

我在尝试在64位的Ubuntu 9.10上安装psycopg2时遇到了一个错误。

错误信息是:

>>> import psycopg2
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "psycopg2/__init__.py", line 69, in <module>
    from _psycopg import BINARY, NUMBER, STRING, DATETIME, ROWID
ImportError: psycopg2/_psycopg.so: undefined symbol: PyUnicodeUCS2_Decode

我试过从 http://initd.org/pub/software/psycopg/ 下载这个软件包并安装,也试过用easy_install来安装。

安装过程中没有出现错误。

这很奇怪,因为我的Python(2.6.2)是用UCS4编译的,所以安装应该不会有问题。

如果有人能帮忙就太好了。

谢谢!

4 个回答

1

我在导入 bx.intervals 这个模块时,也遇到了同样的错误,那个模块是来自 bx-python 的:

undefined symbol: PyUnicodeUCS2_Decode

不过,我当时使用的 Python 版本已经是用 ucs4 编译过的。显然,bx-python 是基于一个用 ucs2 编译的 Python 版本来构建的。所以我不得不按照 OP 提到的相反方式重新编译 Python:./configure --enable-unicode=ucs2

4

就像你说的,你的Python是用UCS4构建的。但是你想安装的psycopg2是针对用UCS2构建的Python制作的。你需要找一个或者自己构建一个UCS4版本的。

12

我解决了这个问题。

我需要重新编译Python,并加上一个选项--enable-unicode=ucs4。

不过我还是不太明白,为什么因为在Ubuntu的默认版本中已经是使用ucs4了。

撰写回答