문제

내가 노력하고 구축 cx_Oracle 에 대한 Python2.7.2 및 Oracle11g 설치 하지만 내장 cx_Oracle.그래서 찾을 수 없습니다 libclntsh.니다.11.1 그래서 가져오기 cx_Oracle 에서는 파이썬은 실패합니다.

/mypath/cx_Oracle-5.1.1/build/lib.linux-x86_64-2.7-11g]$ ldd cx_Oracle.so
    libclntsh.so.11.1 => not found
    libpthread.so.0 => /lib64/libpthread.so.0 (0x00002ae9be290000)
    libc.so.6 => /lib64/libc.so.6 (0x00002ae9be4ab000)
    /lib64/ld-linux-x86-64.so.2 (0x000000389b600000)

libclntsh.니다.11.1 내 오라클 클라이언트 설치 디렉토리:

/apps/oracle/client/11.2.0.1/home1/lib]$ ls -l libclntsh.so*
libclntsh.so -> /apps/oracle/client/11.2.0.1/home1/lib/libclntsh.so.11.1
libclntsh.so.11.1

과 cx_Oracle setup.py 기 이 lib dir 다:

/mypath/cx_Oracle-5.1.1]$ python2.7 setup.py build
/apps/oracle/client/11.2.0.1/home1/
running build
running build_ext
building 'cx_Oracle' extension
gcc -pthread -fno-strict-aliasing -g -O2 -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -I/apps/oracle/client/11.2.0.1/home1/rdbms/demo -I/apps/oracle/client/11.2.0.1/home1/rdbms/public -I/apps/bweb/python-2.7.2/include/python2.7 -c cx_Oracle.c -o build/temp.linux-x86_64-2.7-11g/cx_Oracle.o -DBUILD_VERSION=5.1.1
In file included from /apps/oracle/client/11.2.0.1/home1/rdbms/public/oci.h:3024,
                 from cx_Oracle.c:10:
/apps/oracle/client/11.2.0.1/home1/rdbms/public/ociap.h:10788: warning: function declaration isn't a prototype
/apps/oracle/client/11.2.0.1/home1/rdbms/public/ociap.h:10794: warning: function declaration isn't a prototype
gcc -pthread -shared build/temp.linux-x86_64-2.7-11g/cx_Oracle.o -L/apps/oracle/client/11.2.0.1/home1/lib -lclntsh -o build/lib.linux-x86_64-2.7-11g/cx_Oracle.so

뭔가가 분명 잘못된 이 설치?

감사

업데이트

LD_LIBRARY_PATH 담 lib 디렉토리 위로 libclntsh.니다.11.1

$ echo $LD_LIBRARY_PATH
/apps/oracle/client/11.2.0.1/lib

이것을 보이지 않는 어떤 차이입니다.내가 다시 cx_Oracle.그래서 파일을 아직도 그것을 보여줍 libclntsh.so.11.1 => not found 면 나는 실행 $ ldd cx_Oracle.so.

Python 드 실패 내장된 모듈:

Python 2.7.2 (default, Jan 19 2012, 14:38:32)
[GCC 3.4.6 20060404 (Red Hat 3.4.6-11)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import cx_Oracle
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: libclntsh.so.11.1: cannot open shared object file: No such file or directory

해결

문제와 관련 LD_LIBRARY_PATH 환경 변수입니다.에 대한 제한으로 인해 설치 난 작업(corp env)내가 구축했다 cx_Oracle 다른 사용자로(시스템 계정).즉나이:

$ sudo -u username python27 setup.py build

그럼에도 불구 LD_LIBRARY_PATH 이 올바르게 설정 된,나 버전은 사용되지 않았을 때의 명령이 실행되었으로 다른 사용자.할 수 있었을 구축하여 성공적으로 이동하는 소스 코드의 위치를 어디서 나는 권한 및 실행으로 구축에 사용하는 사용자.

도움이 되었습니까?

해결책

추가 /apps/oracle/client/11.2.0.1/home1/lib/ 귀하의 LD_LIBRARY_PATH 환경변수 실행하는 명령은 아래에서 터미널을 실행하기 전에 python 또는 추가로 귀하의 .bashrc

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/apps/oracle/client/11.2.0.1/home1/lib/

다른 팁

예.라이브러리의 디렉토리를 볼 필요가있는 로더 캐시 도구를 알리는 것을 잊었습니다.이 디렉토리를 /etc/ld.so.conf 또는 유사한 파일에 추가하고 ldconfig를 실행하십시오.

많은 oracle 제품 설치 oraenv.그것이 설정된 다른 환경 변수, LD_LIBRARY_PATH, 다,그래서 실행하는 것이 좋 . oraenv 설정하는 대신 귀하의 환경 수 있습니다.

ld_run_path 을 설정하십시오.LD_RUN_PATH는 링커에서 런타임에만 라이브러리를 찾을 위치를 지정하기 위해 링커에서 사용됩니다.)

이제 cx_oracle을 빌드합니다.

/mypath/cx_Oracle-5.1.1]$ export LD_RUN_PATH="/apps/oracle/client/11.2.0.1/home1/lib"
/mypath/cx_Oracle-5.1.1]$ python2.7 setup.py build
.

이것은 cx_oracle을 가져 오는 동안 ld_library_path 설정이 필요하지 않습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top