virtualenv 같은 가상 환경을 사용하면 모든 문제가 해결되며 관리 차원에서 남겨둔 문서입니다.


pip user mode 

Python 의 패키지 관리자인 pip 는 system 경로에 패키지를 설치하므로 root 권한이 필요한 문제가 있습니다.


이를 해결하려면 패키지 작업시마다 root 로 작업하거나 python 패키지가 설치되는 디렉터리를 일반 사용자도 쓸 수 있도록 하는 방법이 있는데 둘 다 피해야할 작업 방식입니다.


다행히 pip 는 사용자 경로에 패키지 설치를 지원하므로 다음과 같이 실행시 --user 옵션을 추가하면  root 권한이 없어도 패키지 설치가 가능합니다.

pip install PACKAGE --user
BASH


user mode 일 경우 패키지는 site.USER_BASE 경로에 설치되므로 이 경로를 확인한 후에 하위 bin 폴더를 PATH 에 추가해 주면 됩니다.

site PATH 얻기

$ python3 -c 'import site; print(site.USER_BASE)'

/home/lesstif/.local
BASH


bash 를 사용할 경우 다음 명령을 실행해서 site.USER_BASE 경로를 초기화 파일에 넣어줍니다.

echo 'export PATH=$PATH:'$(python3 -c 'import site; print(site.USER_BASE)')'/bin' >> ~/.bash_profile 
BASH


OS 별 site 경로

위 코드를 OS 마다 구동하면 각각의 user site 를 알수 있는데 일반적으로 다음 경로입니다.

Windows 

Windows 는 다음 경로에 사용자의 python 패키지가 설치되므로 고급 환경 설정에 들어가서 PATH 변수에 추가해 줍니다.

python3 -c 'import site; print(site.USER_BASE)'

C:\Users\USERNAME\AppData\Roaming\Python
POWERSHELL


OS X

OS X 는 ~/Library/Python/PYTHON_VERSION  에 설치되며 PYTHON_VERSION 은 3.6 , 3.7 같은 버전 숫자입니다. 

OS X 서도 아래 명령을 실행해서 초기화 파일에 추가합니다.

echo 'export PATH=$PATH'$(python3 -c 'import site; print(site.USER_BASE)')'/bin' >> ~/.bash_profile 
BASH


Linux

linux 는 ${HOME}/.local/bin 을 직접 PATH 에 추가해 주거나 위 스크립트를 실행하면 됩니다. 

echo 'export PATH=$PATH'${HOME}/.local/bin  >> ~/.bash_profile 
BASH

bash function 에 추가하기

다음과 같은 function 을 쉘 초기화 파일에 추가하면 pip 실행시 자동으로 user mode 로 실행할 수 있습니다.

function pip {
    pip3 "$@" --user
}
CODE

다음 alias 구문으로 해도 되지 않냐고 생각할 수 있지만 alias 는 parameter expand 가 제대로 안 되서 "no such option: --user" 오류가 발생합니다.

alias pip='pip3 $* --user'
CODE


같이 보기

Ref