2012-08-07 134 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 
相關問題