2013-10-18 5 views
4

OSX 10.6에서 작동하는 python-sybase 모듈을 얻으려고하고 있지만 약간의 장애가 있습니다. 내가Python을 가져올 때 정의되지 않은 기호 OSX 10.6의 Sybase 모듈

import Sybase 

을 수행 할 때

나는

Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "Sybase.py", line 15, in <module> 
    from sybasect import * 
ImportError: dlopen(/Library/Python/2.6/site-packages/python_sybase-0.40pre2-py2.6-macosx-10.6-universal.egg/sybasect.so, 2): Symbol not found: _blk_alloc 
    Referenced from: /Library/Python/2.6/site-packages/python_sybase-0.40pre2-py2.6-macosx-10.6-universal.egg/sybasect.so 
    Expected in: flat namespace 
in /Library/Python/2.6/site-packages/python_sybase-0.40pre2-py2.6-macosx-10.6-universal.egg/sybasect.so 

내가 sybasect.so 살펴했다 얻고, 과연, _blk_alloc는 정의되지 않습니다. 이 함수는 Sybase의 sybblk.dylib에 있으며,이 디렉토리는 포함 된 디렉토리가 LD_LIBRARY_PATH에 있습니다.

python setup.py build을 사용하여 python-sybase를 컴파일하면 gcc 명령이 올바르게 올바른 모든 lib를 찾은 것처럼 보이지만 Sybasect.so를 Python 모듈 dir에 설치 한 후 어떤 이유로 lib가 링크 된 것처럼 보이지 않습니다.

GCC 명령은 -L/Applications/Sybase/System/OCS-15_0/lib 위치가 올바른지

gcc-4.2 -Wl,-F. -bundle -undefined dynamic_lookup -arch i386 -arch ppc -arch x86_64 build/temp.macosx-10.6-universal-2.6/blk.o build/temp.macosx-10.6-universal-2.6/databuf.o build/temp.macosx-10.6-universal-2.6/cmd.o build/temp.macosx-10.6-universal-2.6/conn.o build/temp.macosx-10.6-universal-2.6/ctx.o build/temp.macosx-10.6-universal-2.6/datafmt.o build/temp.macosx-10.6-universal-2.6/iodesc.o build/temp.macosx-10.6-universal-2.6/locale.o build/temp.macosx-10.6-universal-2.6/msgs.o build/temp.macosx-10.6-universal-2.6/numeric.o build/temp.macosx-10.6-universal-2.6/money.o build/temp.macosx-10.6-universal-2.6/datetime.o build/temp.macosx-10.6-universal-2.6/date.o build/temp.macosx-10.6-universal-2.6/sybasect.o -L/Applications/Sybase/System/OCS-15_0/lib -lsybblk -lsybct -lsybcs -lsybtcl -lsybcomn -lsybintl -lsybunic -o build/lib.macosx-10.6-universal-2.6/sybasect.so 

이며, 해당 폴더 오른쪽 .dylib 년대의 서비스를 제공합니다. 내가 otool을 실행하면

출력은 : 내가 거기에베이스 libs와보고 기다리고 있었다

$ otool -L build/lib.macosx-10.6-universal-2.6/sybasect.so 
build/lib.macosx-10.6-universal-2.6/sybasect.so: 
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 125.2.11) 

.

Mac에서 연결하는 데 약간 익숙합니다. sybasect.so가 Sybase 라이브러리를 참조하도록하려면 어떻게합니까?

답변

1

수정 됨.

문제는 필자가 링크하고있는 다양한 Sybase 라이브러리가 32 비트 전용이지만 64 비트 모드로 파이썬을 실행하고 있다는 것이 었습니다. 수정은 32 비트 모드에서 파이썬을 실행하는 것뿐이었습니다.

나는 특별히 64 비트 모드가 필요 없기 때문에 defaults write com.apple.versioner.python Prefer-32-Bit -bool yes 명령을 사용했습니다.