我正在尝试让psycopg2使用ML,默认的Python 2.7(2.7.2)。我通过自制软件安装了postgresql,用pip安装了psycopg2。 Postgres很高兴并且正在运行,PGAdmin3可以看到我制作的数据库。
但是当我运行python并尝试
时import psycopg2
我明白了:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Library/Python/2.7/site-packages/psycopg2/__init__.py", line 67, in <module>
from psycopg2._psycopg import BINARY, NUMBER, STRING, DATETIME, ROWID
ImportError: dlopen(/Library/Python/2.7/site-packages/psycopg2/_psycopg.so, 2): Symbol not found: _PQbackendPID
Referenced from: /Library/Python/2.7/site-packages/psycopg2/_psycopg.so
Expected in: flat namespace
in /Library/Python/2.7/site-packages/psycopg2/_psycopg.so
现在sudo pip install psycopg2
的输出并不完全干净。 Clang给出了一堆警告,但没有错误:
警告:编译期间未使用的参数:' - mno-fused-madd'
警告:未使用的功能'Dprintf' 警告:隐式转换失去整数精度:'long'到'int' 警告:无符号表达式的比较&lt; 0总是假的 ld:警告:忽略文件/usr/local/Cellar/postgresql/9.1.4/lib/libpq.dylib,文件是为不支持的文件格式构建的(0xcf 0xfa 0xed 0xfe 0x 7 0x 0 0x 0 0x 1 0x 3 0x 0 0x 0 0x 0 0x 6 0x 0 0x 0 0x 0)这不是被链接的体系结构(i386):/ usr / local / Cellar / postgresql / 9.1.1 / lib / libpq.dylib
最后一个链接器警告让我担心,我想知道它是否再次出现旧的32-vs-64位Python问题。我试过旧的:
defaults write com.apple.versioner.python Prefer-32-Bit -bool yes
但没有骰子。
我的下一个想法是:强制brew将postgresql编译为x86_64,或者从brew安装python。我想要第一个选择,因为我有一些其他的软件(叹气)依赖于Apple的Python在PATH中的第一个。
有关如何使用brew将postgresql编译为64位的任何想法吗?
答案 0 :(得分:2)
正如@Doughal指出的那样,我已经运行了 32 -bit Python,而且库需要64位。所以,用简单的
修复defaults write com.apple.versioner.python Prefer-32-Bit -bool no