2013-01-16 43 views
0

OpenBSD的,PostgreSQL9.2,python2.7 试图从蟒命令行导入psycopg2模块:导入错误:无法加载指定的对象 - 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。也许他看不到这个图书馆?

+0

您确定这是可从psycopg2导入:BINARY,NUMBER,STRING,DATETIME,ROWID吗?什么是ROWID? –

+0

@MikedeKlerk:psycopg2库的部分;追溯的最后一行是试图导入C扩展名的python模块。这个问题不可导入的事实是这个问题的原因,图书馆已经破产。 –

回答

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

+0

这是指向库的指针(LD_LIBRARY_PATH =/usr/local/pgsql/lib)。 Python命令行现在导入psycopg2并建立连接。 Django仍然在写相同的错误。 –

+0

@ dima.h:你使用WSGI服务器来运行Django吗? –

+0

manage.py runserver –

相关问题