pip install 주의점

steadycode·2023년 1월 30일
0

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 들이 설치되는 공간.


profile
steadycode

0개의 댓글