Pylons 导入 Psycopg2 错误

2 投票
4 回答
1876 浏览
提问于 2025-04-15 15:22
    Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
 File "/Library/Python/2.6/site-packages/psycopg2/__init__.py", line 60, in <module>
   from _psycopg import BINARY, NUMBER, STRING, DATETIME, ROWID
ImportError: dlopen(/Library/Python/2.6/site-packages/psycopg2/_psycopg.so, 2): Symbol not found: _PQbackendPID
 Referenced from: /Library/Python/2.6/site-packages/psycopg2/_psycopg.so
 Expected in: flat namespace
 in /Library/Python/2.6/site-packages/psycopg2/_psycopg.so

Psycopg2之前一直运行得很好,但现在我遇到了这个错误。

对于这个问题,有什么想法吗?非常感谢。


补充:在每次设置我的Mac时都遇到这么多psycopg2的错误后,我决定改用VMWareFusion来运行Ubuntu。

4 个回答

1

这对我来说也不管用,而且在我的情况下,似乎并不是32位和64位的问题:

decibel@workbook.1[6:55]~/src:85%file /opt/local/lib/postgresql83/libpq.dylib 
/opt/local/lib/postgresql83/libpq.dylib: Mach-O 64-bit dynamically linked shared library x86_64
decibel@workbook.1[6:56]~/src:86%file ~/.python-eggs/psycopg2-2.0.14-py2.6-macosx-10.6-universal.egg-tmp/psycopg2/_psycopg.so 
/Users/decibel/.python-eggs/psycopg2-2.0.14-py2.6-macosx-10.6-universal.egg-tmp/psycopg2/_psycopg.so: Mach-O universal binary with 3 architectures
/Users/decibel/.python-eggs/psycopg2-2.0.14-py2.6-macosx-10.6-universal.egg-tmp/psycopg2/_psycopg.so (for architecture i386):   Mach-O bundle i386
/Users/decibel/.python-eggs/psycopg2-2.0.14-py2.6-macosx-10.6-universal.egg-tmp/psycopg2/_psycopg.so (for architecture ppc7400):    Mach-O bundle ppc
/Users/decibel/.python-eggs/psycopg2-2.0.14-py2.6-macosx-10.6-universal.egg-tmp/psycopg2/_psycopg.so (for architecture x86_64): Mach-O 64-bit bundle x86_64
decibel@workbook.1[6:56]~/src:87%
1

是不是因为Postgres的安装被删除或更新了呢?这个符号应该是来自libpq这个库。

4

你遇到这个错误是因为你使用的64位Python找不到64位的psycopg2库。

你可以选择把Python降级到32位版本,或者尝试获取一个64位的psycopg2库。关于这个话题还有更多讨论,可以去Ben Kreeger的博客看看。

撰写回答