0

我试图让 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 位?

4

1 回答 1

2

正如@Doughal 指出的那样,我已经在运行32位 Python,而该库需要 64 位。所以,用一个简单的固定

defaults write com.apple.versioner.python Prefer-32-Bit -bool no
于 2012-08-07T02:39:03.027 回答