在红帽上使用Python和Postgres

0 投票
1 回答
1504 浏览
提问于 2025-04-16 06:04

我在Linux上安装psycopg2时遇到了麻烦。当我尝试导入psycopg2时,出现了以下错误。

Python 2.6.4 (r264:75706, Nov 19 2009, 14:52:22) 
[GCC 3.4.6 20060404 (Red Hat 3.4.6-3)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import psycopg2
Traceback (most recent call last):
   File "<stdin>", line 1, in <module>
   File "/usr/local/lib/python2.6/site-packages/psycopg2/__init__.py", line 69, in <module>
   from _psycopg import BINARY, NUMBER, STRING, DATETIME, ROWID
ImportError: /usr/local/lib/python2.6/site-packages/psycopg2/_psycopg.so: undefined symbol: PQserverVersion

我使用的是Postgresql 9.0.1、Psycopg2 2.2.2、Python 2.6.4和RHEL 4。

这个问题和一年前的一个问题完全一样,但那个问题一直没有人回答:http://code.activestate.com/lists/python-list/169772/

有没有人见过这个错误?任何建议都非常感谢。

补充说明:在我的Mac(雪豹系统)上,这个Postgresql 9.0.1、Psycopg2 2.2.2和Python 2.6.4的组合运行得很好。所以我觉得问题可能是和Red Hat有关。

1 个回答

2

红帽系统自带了一个Postgres版本,这可能会和你自己安装的版本产生冲突。Python在配置psycopg2这个库时,会用到一个叫pg_config的工具。我把Postgres安装在了/usr/local/pgsql/这个路径下,但当我运行which pg_config命令时,返回的是/usr/bin/pg_config/

在psycopg2的构建目录里,有一个文件叫setup.cfg,这个文件可以让你明确指定pg_config的路径:

pg_config=/usr/local/pgsql/bin/pg_config

只需设置这个参数并重新编译,就解决了我的问题。

撰写回答