2013-05-14 3 views
0

내 컴퓨터에서 완벽하게 실행되는 Python 응용 프로그램을 만들었습니다 (Mac OSX 10.8.3 Python2.7.3 Postgresql9.2.4 Psycopg2-2.5). 응용 프로그램은 py2app를 사용하여 컴파일되며 응용 프로그램 내용 폴더에 모든 패키지/모듈이 성공적으로 포함되어 있음을 알 수 있습니다.Psycopg2 Python 응용 프로그램의 배포 문제

Psycopg2가 내 컴퓨터에서 제대로 가져 오지만 응용 프로그램이 정상적으로 실행되지만 응용 프로그램이 다른 컴퓨터에서 실행될 때 (열어 본 4 가지 컴퓨터 ...) 콘솔 메시지가 열리지 않고 ImportError : dlopen (/Applications/app.app/Contents/Resources/lib/python2.7/psycopg2/_psycopg.so, 2) : 라이브러리가로드되지 않았습니다. libpq.5.dylib

내 코드를 검색하고 수정했습니다. SO를 통해 광범위하게 Google은 아무 소용이 없습니다. psycopg2 링크는이 문제를 특별히 다루지 않습니다. http://initd.org/psycopg/articles/2010/11/11/links-about-building-psycopg-mac-os-x/

나는 소스 동안에서 설치 제거하고 사제와 함께 설치 PostgreSQL은 9.2.4로, 소스, MacPorts를, 사제 등 내 현재의 환경은 위에 열거되어에서 구축, psycopg2 & PostgreSQL을 여러 번 다시 설치하고 psycopg2-2.5 한

내가 실행하면 명시 적으로 setup.cfg

에 pg_config 위치를 연결하는 otool -l _psycopg.so에, 나는 다음과 같은 얻을

/usr/lib/libpq.5.dylib (compatibility version 5.0.0, current version 5.4.0) 
/usr/lib/libssl.0.9.8.dylib (compatibility version 0.9.8, current version 47.0.0) 
/usr/lib/libcrypto.0.9.8.dylib (compatibility version 0.9.8, current version 47.0.0) 
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 169.3.0) 

어떻게 내 내장 된 응용 프로그램은 다음과 같습니다 (또는 대상 사용자를 가리킬 수 있습니다 가능하다면 파일)이 파일들? 이것이 올바른 접근 방법입니까? 물론 Py2app는 "frameworks"옵션에서/usr/lib /의 시스템 파일을 포함하지 않습니다.

답변

0

_psycopg.so의 복사본은 postgresql 9.2.4의 home-brew 빌드에서 libpq가 아닌 libpq의 시스템 설치와 연결됩니다.

이 때문에 응용 프로그램은 OSX 10.8을 실행하는 시스템에서만 작동합니다.

해결 방법은 psycopg2를 다시 작성하고 PostgreSQL의 home-brew 빌드에 링크되어 있는지 확인하는 것입니다.

공유 라이브러리를 포함하도록 명시 적으로 언급 한 경우에도 py2app는/usr/lib의 파일을 응용 프로그램 번들로 복사하지 않습니다. 이는/usr의 파일이 시스템 파일이고 해당 파일을 재배포하는 것이 최선의 w.r.t입니다. 라이센스.

+0

로널드 - 명확한 조음을 가져 주셔서 감사합니다. 나는 내 실수를 깨닫는다. 내 응용 프로그램 빌드는 이제 libpq 프레임 워크를 포함하며 배포 가능 범위 내에서 올바르게 링크됩니다. 추가 dylib 파일은/usr/lib에있는 것과 똑같습니다. – LouisL