관리 메뉴

솜씨좋은장씨

[Python] mac OS 에서 sqlalchemy + cx_Oracle 활용하여 Oracle DB 연결 시 발생하는 sqlalchemy.exc.DatabaseError: (cx_Oracle.DatabaseError) DPI-1047: Cannot locate a 64-bit Oracle Client library 해결 방법 본문

Programming/Python

[Python] mac OS 에서 sqlalchemy + cx_Oracle 활용하여 Oracle DB 연결 시 발생하는 sqlalchemy.exc.DatabaseError: (cx_Oracle.DatabaseError) DPI-1047: Cannot locate a 64-bit Oracle Client library 해결 방법

솜씨좋은장씨 2022. 3. 1. 13:26
728x90
반응형

이번에 진행하는 작업에서 Oracle DB를 사용하여 sqlalchemy 라이브러리와 cx_Oracle 라이브러리를 활용하여

DB에 연결을 시도하였는데 아래와 같은 에러가 발생하였습니다.

sqlalchemy.exc.DatabaseError: (cx_Oracle.DatabaseError) DPI-1047: 
Cannot locate a 64-bit Oracle Client library: "dlopen(libclntsh.dylib, 0x0001): 
tried: 'libclntsh.dylib' (no such file), '/usr/local/lib/libclntsh.dylib' (no such file), 
'/usr/lib/libclntsh.dylib' (no such file), '/Users/donghyunjang/API/libclntsh.dylib' (no such file)". 
See https://cx-oracle.readthedocs.io/en/latest/user_guide/installation.html for help
(Background on this error at: http://sqlalche.me/e/13/4xp6)

이를 해결하는 방법은 다음과 같습니다. 

👨🏻‍💻 해결 방법

먼저 아래의 링크로 이동하여 필요한 파일을 다운로드 받습니다.

https://www.oracle.com/kr/database/technologies/instant-client/macos-intel-x86-downloads.html

그 다음 다운로드 받은 파일을 실행합니다.

실행하면 /Volumes 위치에 instantclient-basic-macos~ 라는 디렉토리가 생성됩니다.

그러면 터미널을 열고

$ cd /Volumes/instantclient-basic-macos.x64-19.8.0.0.0dbru/

해당 위치로 이동합니다.

$ ./install_ic.sh

그 다음 위의 명령어로 해당 디렉토리 안에있는 스크립트를 실행합니다.

/Users/donghyunjang/Downloads/instantclient_19_8
Using existing dir: /Users/donghyunjang/Downloads/instantclient_19_8...
Copying /Volumes/instantclient-basic-macos.x64-19.8.0.0.0dbru files ...

그럼 위와 같은 내용이 나오면서 실행됩니다.

 

여기까지 했다면 이제 파이썬 코드로 가서

import cx_Oracle

cx_Oracle.init_oracle_client(lib_dir="/Volumes/instantclient-basic-macos.x64-19.8.0.0.0dbru")

위와 같이 cx_Oracle을 import 한뒤 init_oracle_client에 아까 생성된 디렉토리의 주소를 붙여넣습니다.

 

읽어주셔서 감사합니다.

Comments