Python postgreSQL과 연동시에 libpq.so.5: cannot open shared object file: No such file or directory 오류
리눅스 환경에서 파이썬으로 postgreSQL 연동 프로그램을 작성했는데 다음과 같은 오류가 발생하였습니다. 내용을 살펴보니 libpq.so.5 파일을 찾을 수 없다는 내용입니다. .so 파일은 특정 모듈이 동작하기 위해 필요한 공유 라이브러리입니다. 그런데 해당 라이브러리를 찾을 수 없으니 postgreSQL DB 연동 모듈인 psycopg2가 동작하지 못하는 것입니다.
Traceback (most recent call last):
File "test.py", line 6, in <module>
import psycopg2.extras
File "/opt/python33/lib/python3.3/site-packages/psycopg2/__init__.py", line 50, in <module>
from psycopg2._psycopg import ( # noqa
ImportError: libpq.so.5: cannot open shared object file: No such file or directory |
cs |
먼저 자신의 리눅스에서 libpq.so.5가 존재하는 경로를 찾습니다.
# find / -name libpq.so.5 |
cs |
postgreSQL이 설치되어 있는 환경이라면 postgreSQL 설치 경로의 lib 디렉터리하위에 심볼릭 링크 형태로 존재합니다. 실제 가리키는 파일은 libpq.so.5.x 입니다. 저의 경우에는 libpq.so.5.4 파일을 심볼릭 링크 형태로 가리키고 있네요.
# cd postgreSQL 설치경로/lib
# ls -l libpq.*
-rw-r--r-- 1 root root 266614 2018-07-18 10:55 libpq.a
lrwxrwxrwx 1 root root 12 2018-07-18 10:55 libpq.so -> libpq.so.5.4
lrwxrwxrwx 1 root root 12 2018-07-18 10:55 libpq.so.5 -> libpq.so.5.4
-rwxr-xr-x 1 root root 176771 2018-07-18 10:55 libpq.so.5.4 |
cs |
만약 libpq.so.5.x 로 파일은 존재하는데 심볼릭 링크가 걸려있지 않는 것이라면 심볼릭 링크를 하나 생성해줍니다. 아마도 psycopg2 모듈이 libpq.so.5 파일만을 찾아다니는 것으로 예상되기 때문입니다.
#ln -s libpq.so.5.4 libpq.so.5 |
cs |
만약 libpq.so.5 가 아예 설치되어 있지 않다면 yum 명령어로 설치해줍니다.
yum install -y libpq.so.5 |
cs |
정상적으로 설치되었다면 /usr/lib 하위에 설치되었을 것입니다.
# cd /usr/lib
# ls -l libpq.*
lrwxrwxrwx 1 root root 21 2018-09-10 18:46 libpq.so.5 -> /usr/lib/libpq.so.5.2
-rwxr-xr-x 1 root root 156876 2017-10-06 05:27 libpq.so.5.2 |
cs |
이제 환경변수 잡아주어 .so(shared object) 파일의 위치를 알려주어야 합니다.
리눅스에서 .so 파일같은 라이브러리들의 경우 LD_LIBRARY_PATH 변수를 참조하게 되어있습니다. 따라서 LD_LIBRARY_PATH 변수에 libpq.so.5 가 있는 디렉터리 경로를 추가해줍니다.
vim ~/.bash_profile 명령어로(또는 vi) .bash_profile을 열어줍니다. 그리고 다음과 같이 libpq.so.5.2가 있는 디렉터리 경로를 추가해주세요.
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:"/usr/psql-9.4/lib"
export LD_LIBRARY_PATH |
cs |
:wq 저장, 종료 후에 다음 명령어를 실행합니다. 이후 다시 작성한 파이썬 파일을 실행하면 오류가 해결됩니다.
# source ~/.bash_profile |
cs |
'Python' 카테고리의 다른 글
[Python] 파이썬 오라클(cxOracle) 사용시 쿼리 결과 Dictionary 로 받기 (2) | 2019.03.18 |
---|---|
[Python] 파이썬 TabError: inconsistent use of tabs and spaces in indentation 오류 발생시 (0) | 2018.09.11 |
[Python] 쿼리시에 TypeError: 'int' object does not support indexing 오류 (0) | 2018.09.10 |
[Python] Windows 환경에서 파이썬 pymssql 설치하기 (0) | 2018.08.30 |
[Python] 파이썬 pip로 pymmssql 설치시 C++ Build Tools 오류 (6) | 2018.08.30 |