python3
를 사용하여 코드 작업 시, 필요한 패키지를 pip3 install
로 설치하는 경우가 대부분임. 그러나 pip3
는 사용되는 명령어에 따라 library 와 binary 가 다른 path 에 설치되는 문제가 발생하여 dependency 문제가 발생할 수 있음. 위 문제가 발생할 경우, system library 문제인지, python library 문제인지 정확한 파악이 어려워 많은 문제를 겪을 수 있음. 본 포스팅은 pip3
명령어로 설치 시 주의할 점에 대해 다룸.
~/.local/lib/python3.8
vs. /usr/local/lib/python3.8
먼저 pip3
로 패키지를 설치하면 다음의 두 개의 디렉토리에 library 혹은 binary 가 설치됨.
~/.local
/usr/local
위 두개의 차이점은 pip3 install
에서 --user
플래그의 유무임
pip3 install --user <package>
-> ~/.local
pip3 install <package>
-> /usr/local
or ~/.local
sudo pip3 install <package
-> /usr/local
보통은 pip3 install
만 사용을 해도 ~/.local
에 저장이 됨. 그러나 간혹 pip3 install
을 사용하면 /usr/local
에 설치가 될 수 있으니 주의해야함.
pip3 install --user
의 장점--user
플래그는 '현재 유저' 의 디렉토리에 패키지를 설치하며, 시스템에서는 사용을 하지 못함. 위 플래그를 사용하여 설치를 진행하면 package 에 관한 dependency 를 포함하여 패키지가 ~/.local
에 설치가 됨. 다음의 장점이 있음.
Isolation: 설치된 패키지는 전체 system 혹은 동일한 system 에 존재하는 다른 유저의 간섭을 막음.
No root privileges required: 설치된 패키지는 root 권한이 필요하지 않음.
Easy to manage: 설치된 패키지는 쉽게 삭제되고 재설치가 가능함. system administrator 의 도움이 필요하지 않음.
Customizable: 설치된 패키지는 유저 권한이 전부이므로 수정이 가능하며 다른 시스템에 영향을 미치지 않음.
sudo pip3 install
의 주의점sudo
를 사용하여 패키지를 설치할 시, 다른 시스템의 library 와 중복이 되거나, dependency 문제가 발생하므로 주의해야함. 한번의 설치로 시스템 전체, 그리고 다중의 유저가 동일한 패키지를 사용할 수 있으나 여러 문제가 발생하므로 되도록이면 --user
플래그를 사용해야함.
/usr/lib/python3.8
vs. others
앞에 구술했다 시피, pip3
로 설치한 패키지는 /usr/local
혹은 ~/.local
에 설치됨. 그러나 /usr/lib/python3.8
에도 library가 존재하는 것을 확인할 수 있는데, 이는 'OS 에 저장된' python library 임. 초기에 sudo apt install
로 설치할 시 필요한 dependencies 들이 설치되는 공간.