2012-08-07 6 views
0

psycopg2를 ML (기본 Python 2.7 (2.7.2))에서 작동 시키려고합니다. homebrew를 통해 postgresql을 설치하고 pip와 함께 psycopg2를 설치했습니다. Postgres는 즐겁게 작동하며 PGAdmin3은 제가 만든 db를 볼 수 있습니다. 내가Mountain Lion에 psycopg2 설치 (brew + pip)

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가 융합 - 매드'
경고 : 사용되지 않는 기능 'Dprintf' 경고 : 암시 적 변환이 정수 정밀도를 잃는다 : 'long'to 'int' 경고 : 부호없는 표현 <의 비교는 항상 거짓입니다.
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 비트 파이썬 문제인지 다시 궁금해하고있다. 나는 옛날을 시도했다 :

defaults write com.apple.versioner.python Prefer-32-Bit -bool yes 

하지만 주사위는 없다.

내 생각은 postgresql을 x86_64로 컴파일하거나 brew에서 python을 설치하는 것입니다. 첫 번째 선택을 원합니다. PATH에있는 Apple의 Python에 의존하는 다른 소프트웨어 (한숨)가 있기 때문입니다.

어떤 아이디어가 brew를 사용하여 64 비트로 postgresql을 컴파일하게 만드나요?

+1

고정 64 비트입니다. 아키텍쳐 이름 대신 16 진수를 출력하는 이유는 ....'libpq' 아키텍처는'file /usr/local/Cellar/postgresql/9.1.4/lib/libpq '로 확인할 수 있습니다. .dylib'. – Dougal

+0

@Dougal'/usr/local/Cellar/postgresql/9.1.4/lib/libpq.5.4.dylib : Mach-O 64 비트 동적 링크 공유 라이브러리 x86_64'가 나타납니다. – Cathy

+0

@Dougal Ah! 'defaults write'를'no'로 바꾸면 문제가 해결됩니다. 감사! 나는 모두 바꿔 치기했다. – Cathy

답변

2

@Doughal은 이미 -bit Python을 실행 중이 었으며 라이브러리가 64 비트를 원했습니다. `libpq.dylib`를 무시에 대한 warning`이 아키텍처 인 linked`는`i386`, 당신의 파이썬을 의미하는 것은 이미 32 비트하지만 포스트 그레스가 될 것으로 보인다 '라고 말한다 : 그래서, LD는`하는 간단한

defaults write com.apple.versioner.python Prefer-32-Bit -bool no