ImportError:无法加载指定的对象 - psycopg2

时间:2013-01-16 07:03:18

标签: python python-2.7 psycopg2 postgresql-9.2

OpenBSD,PostgreSQL9.2,python2.7 尝试从python命令行导入psycopg2模块:

Python 2.7.3 (default, Aug  3 2012, 05:33:56)
[GCC 4.2.1 20070719 ] on openbsd5
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.7/site-packages/psycopg2/__init__.py", line 67, in <module>
    from psycopg2._psycopg import BINARY, NUMBER, STRING, DATETIME, ROWID
ImportError: Cannot load specified object

psycopg2已编译并安装。我在/ site-packages / psycopg2文件夹中看到了_psycopg.so。也许他看不到这个图书馆?

1 个答案:

答案 0 :(得分:2)

psycopg2 python模块包含一个用C编写的扩展名。无法加载该扩展名,因为它所依赖的另一个C库缺失。

检查您是否仍安装了PostgreSQL客户端库,psycopg2可以找到它。

请注意,如果在WSGI服务器中运行Django,则需要在WSGI服务器启动之前设置LD_LIBRARY_PATH环境变量 。或者,使用psycopg2重新编译LD_RUN_PATH=/usr/local/pgsql/lib扩展名,以便在链接时“硬编码”PostgreSQL客户端库的路径,从而无需设置LD_LIBRARY_PATH

最后一种方法是将/usr/local/pgsql/lib路径添加到/etc/ld.so.conf,请参阅ld.so(8) manpage