安装psycopg2时出现“undefined symbol: PyUnicodeUCS2_Decode”错误

5

我在尝试在Ubuntu 9.10 64位系统上安装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个回答

12

修复了它。

我必须使用 --enable-unicode=ucs4 重新编译 Python。

仍然不清楚为什么在 Ubuntu 上默认版本使用 ucs4。


你怎么确切地使用它? - Ghasem
你是如何重新编译它的? - iury simoes-sousa
2
它在配置中完成 ./configure --enable-unicode=ucs4 - eephillip
1
当我使用--enable-shared编译Python时,遇到了类似的错误,但是在.bashrc中设置的LD_LIBRARY_PATH路径不正确。修改该路径定义后问题得到解决。 - 0 _

4

就像你所说的,你的Python是使用UCS4构建的。但是你尝试安装的psycopg2是针对使用UCS2构建的Python构建的。请寻找一个针对UCS4构建的版本或自行构建。


谢谢,但这正是python ./setup.py build和python ./setup.py install应该做的事情。 - Marco Fucci
我已经尝试了构建/安装,但在编译我的应用程序时仍然出现此错误。您能分享一下您使用的可行的psycopg2的位置吗?谢谢。 - Steve Peak

1

当我从 bx-python 中导入 bx.intervals 时,遇到了同样的错误:

undefined symbol: PyUnicodeUCS2_Decode

然而,我使用的Python版本已经编译为ucs4。显然,bx-python是针对使用ucs2编译的Python版本构建的。因此,我不得不按照OP所描述的相反方式重新编译Python:./configure --enable-unicode=ucs2

-1
在我的情况下,使用bash shell没有问题,但使用csh时遇到了这个问题。后来发现安装了多个版本的Python。其中一个默认安装在/usr/local/bin中可以正常工作,而另一个安装在/bin中则出现了问题。因此,在认为需要管理员帮助重新编译之前,请检查是否安装了任何其他版本的Python。

似乎这并没有帮助回答问题,只是表明你无法重现故障。 - dboy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接