我试图让 psycopg2 在 ML 上工作,默认 Python 2.7 (2.7.2)。我通过自制软件安装了 postgresql,并用 pip 安装了 psycopg2。Postgres 愉快地启动并运行,PGAdmin3 可以看到我创建的 db。
但是当我运行 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' 警告:无符号表达式 < 0 的比较始终为 false
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.4/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 位?