programing

Python 모듈 "cx_Oracle" 모듈을 찾을 수 없습니다.

fastcode 2023. 8. 8. 23:57
반응형

Python 모듈 "cx_Oracle" 모듈을 찾을 수 없습니다.

원격 Oracle 데이터베이스 서버에 연결하기 위해 최근에 컴퓨터에 cx_Oracle 모듈을 설치했습니다.(당사에는 Oracle 클라이언트가 없습니다.)

  • 파이썬: 버전 2.7 x86
  • 오라클: 버전 11.1.X x64
  • Cx_Oracle:버전-5.1.2-11g.win32-py2.7

그런 다음 스크립트를 실행할 때마다 스크립트가 실패하고 다음 메시지가 인쇄됩니다.

가져오기 오류: DLL 로드 실패:지정한 모듈을 찾을 수 없습니다.

Here에서 관련 게시물을 발견했는데, 어쨌든 python 스크립트가 호출되는 쪽에 Oracle 클라이언트가 있어야 하는지 궁금합니다.

누가 저 좀 도와주실 수 있나요?잘 부탁드립니다.

# - This import requires appropriate oraocciXX.dll to be available in PATH (on windows)
#   (Probably LD_LIBRARY_PATH or LD_LIBRARY_PATH64 on POSIX)
#     where XX is the oracle DB version, e.g. oraocci11.dll for Oracle 11g.
# - This dll is part of the Oracle Instant client pkg available here:
#     http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html
# - Also ensure that python, cx_Oracle and Oracle Client are of same arch (32 or 64-bit)
#
import cx_Oracle

다음에 대한 아치(32비트 또는 64비트)를 찾을 수 있습니다.

  • 명령행에서 대화형 모드로 python을 실행함으로써 python.
  • cx_Oracle: 다운로드한 파일의 이름을 확인합니다.
  • Oracle 클라이언트:
    • 클라이언트 패키지의 일부인 sqlplus를 실행합니다.
    • 작업 관리자를 시작하고 sqlplus 여부를 확인합니다.exe 옆에 "*32"가 있음(=32비트) 또는 없음(=64비트)
    • 경우 sqlplus를 합니다.dumpbin /headers oraocciXX.dll
  • POSIX를 사용하고 있다면 이미 알고 있을 것입니다.file oraocciXX.so

마지막으로, 만약 당신이 여전히 이해하지 못한다면, 여기는 정말 더미를 위한 지침입니다.

  • 32개의 전의버 python, cx_Oracle 및 Oracle Instant Client 치설했니합비인확다지는트를▁32비,다니확▁c합인▁oracle▁python.이들은 64비트일 수도 있지만 3개 모두에 대해 동일해야 합니다.혼합 및 일치시킬 수 없습니다.링크:
  • Windows:
    • set PATH=%PATH%;C:\ProgFiles\OraClient\11_2
  • POSIX(리눅스/유닉스/Solaris...) <---------------------------------------------------------------------------
    • export LD_LIBRARY_PATH=/path/to/your/32bit/oraocciXX.so
    • 64µ트)export LD_LIBRARY_PATH64=/path/to/your/64bit/oraocciXX.so
  • 려달을 path-to-python/python.exe -c "import cx_Oracle"설치가 작동하는지 여부를 테스트합니다.
    • 인쇄가 되면
    • 아무것도 없습니다. 그러면 성공적입니다.
    • ImportError: DLL load failed: The specified module could not be found수 없습니다. 또는 aocciXX를 찾을 수 없습니다.변수를 올바르게 설정합니다.
    • ImportError: DLL load failed: %1 is not a valid Win32 application불일치가 .32/64 비트가 일치하지 않습니다.

예, Oracle 클라이언트가 설치되어 있어야 합니다.

cx_ORACLE README에서

"cx_Oracle을 사용하려면 Oracle 클라이언트(또는 서버)를 설치해야 합니다.전체 클라이언트 설치와 함께 제공되는 도구가 필요하지 않은 경우 Instant Client를 설치하는 것이 좋습니다."

인스턴트 클라이언트에 대한 편집 링크: http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html

며칠 동안 이 문제를 해결하려고 노력한 후에, 저는 그것을 알게 되었습니다.set PATH=%PATH%:<insert Oracle home here>날 위해 속임수를 쓰지 않았습니다.Windows XP 시스템 속성으로 이동하여 Oracle 홈을 '시스템 변수' 아래의 '경로' 변수에 추가해야 했습니다.

아직 코멘트할 수 없습니다 :-( 하지만 위의 고유한 단계를 위해 .exe 및 .dll의 권한을 확인하여 실행 가능한지 확인해보시겠습니까?

그래서 제가 그것을 작동시키기 위해 필요한 단계들이 있었습니다.

여기서 인스턴트 클라이언트의 압축을 풉니다.http://www.oracle.com/technetwork/topics/winx64soft-089540.html

chmod +x *.exe *.dll(나는 cygwin을 사용하고 있습니다.

cygwin을 사용하여 pip을 통해 cx_oracle을 설치할 수 없었습니다.

그래서 표준 dist python(비 cygwin)을 사용해야 했고 윈도우 설치 프로그램을 통해 cx_oracle을 설치했습니다.

또한 윈도우즈 경로에 f:/opt/instantclient_12_1(Oracle 인스턴트 클라이언트를 설치한 위치)을 추가해야 했습니다(시스템 ->고급 시스템 속성 ->환경 변수 ->시스템 변수를 통해).

언급URL : https://stackoverflow.com/questions/12538238/python-module-cx-oracle-module-could-not-be-found

반응형