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

블로그 이미지

도로락

IT, 프로그래밍, 컴퓨터 활용 정보 등을 위한 블로그

댓글을 달아 주세요! 질문 환영합니다!