2012-08-07 135 views
0

我试图让psycopg2在ML上工作,默认是Python 2.7(2.7.2)。我通过自制软件安装了postgresql,并通过pip安装了psycopg2。 Postgres高兴地运行,并且PGAdmin3可以看到我创建的分贝。在Mountain Lion上安装psycopg2(brew + pip)

但是当我运行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是不完全干净。锵给出一堆的警告,但没有错误:

警告:在编译过程中未使用的说法:“-mno融合,MADD”
警告:未使用的功能“Dprintf” 警告:隐式转换损失整数精度: 'long'为'int' 警告:无符号表达式的比较< 0始终为假
ld:warning:忽略文件/usr/local/Cellar/postgresql/9.1.4/lib/libpq.dylib,文件是为不受支持的文件格式(0xcf 0xfa 0xed 0xfe 0x7 0x 0x 0x 0x 0x3 0x 0x 0x 0x 0x 0x)它不是被链接的体系结构(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将compilegresql编译为x86_64,或从brew安装python。我想要第一个选择,因为我有一些其他软件(叹气),这取决于Apple的Python首先在PATH中。

任何想法如何使用brew进行postgresql编译为64位?

+1

那'LD:约忽略'libpq.dylib' warning'说,'架构是linked'是'i386',这意味着你的蟒蛇似乎已经是32位,但Postgres的是64.不知道为什么它打印出一堆十六进制而不是架构名称,但是......你可以用'file /usr/local/Cellar/postgresql/9.1.4/lib/libpq来检查'libpq'体系结构.dylib'。 – Dougal 2012-08-07 01:28:17

+0

@Dougal我得到'/usr/local/Cellar/postgresql/9.1.4/lib/libpq.5.4.dylib:Mach-O 64位动态链接共享库x86_64'。 – Cathy 2012-08-07 02:36:09

+0

@杜加尔啊!将'defaults write'切换到'no'解决了这个问题。谢谢!我全都转过来了。 – Cathy 2012-08-07 02:37:22

回答

2

正如@Doughal指出的那样,我已经在运行Python位了,并且库需要64位。因此,固定用一个简单的

defaults write com.apple.versioner.python Prefer-32-Bit -bool no 
相关问题