상세 컨텐츠

본문 제목

--user를 통해 pip 사용자 모드에 설치, virtualenv 다운 받기

파이썬

by Riella 2021. 3. 4. 19:56

본문

728x90

Reference: 출처 1, 출처 2,

 

pyenv로 새로운 환경을 만들 수는 있지만... 기존에 있는 git을 다운로드하고 repo directory에 가서 거기를 해당 파이썬 버전에 맞는 가상 환경으로 만드는 방법이 애매했다.

근데 찾아보니 크게 할 이유는 없긴 하다.

오히려 기존에 git으로 프로젝트를 만들어서 올리는 입장이면 virtualenv를 쓸 때 안 좋다는 의견이 많다 (링크).

git repo를 받고 virtualenv를 설정하는 방법도 있긴 하지만 잘 안 한다.

가상 환경에서 pip freeze를 하면 라이브러리 구성요소가 뜨는데

이걸 requirements.txt 파일에 저장해서 올리고 이 파일을 사용해서 직접 환경을 구축할 수 있기 때문이다 (링크 2).

 

그래서 찾아봤는데 virtualenv와 virtualenvwrapper를 사용하면 가능했다 (링크 3).

하지만 pip를 다운로드한 후에 이 둘을 다운로드할 수 있는데

pip를 설치하기 전에 또 어디선가 들은 건 있어서 sudo(super user do) pip를 쓰면 안 된다는 말을 들었다 (링크 4).

그 대안으로 pip를 쓸 때 sudo 권한이 필요 없게 --user모드(일반 계정)로 다운로드하는 방법을 찾아보았다

 

그래서 여러 방법을 찾아봤는데

공식적인 곳에서는 PYTHONUSERBASE 환경 변수를 설정하고 나중에 pip로 설치할 때 --user를 적으면 site.USER_BASE를 설정한 환경 변수로 바꾸어 사용자 모드로 패키지를 설치 가능하게 하는 방법을 알려주었다 (링크 5).

 

하지만 환경 변수를 설정하고 싶지 않았기에 다른 방법을 찾다가 숨겨진 디렉터리에 다운로드하는 걸 찾게 되었다 (링크 6).

 

참고: .local/ 파일을 한번 만들면 그 안에 share이라는 파일이 생기는데 .local을 지우고 싶을 때 지울 수 없게 된다 (위험하다)

도대체 왜 .local을 지운다는 생각을 하지 싶을수도 있다.

근데 나는 $HOME을 home으로 착각하고 .local파일이 잘못된 위치에 설치된줄 알고 지우고 싶다는 생각을 한 3초 했다.

물론 지울 일도 없거니와 많이 쓰는 방법이지만 원하지 않는다면 가상 환경을 만들고 필요할 때만 가상 환경을 켜서 설치하는 방법도 있음을 참고하시길

 

숨겨진 디렉터리 만들기

mkdir -p ~/.local/bin

환경 변수에 더해준다.

echo "export PATH=\$PATH:~/.local/bin" >> ~/.bashrc
source ~/.bashrc

pip 설치를 위한 get-pip.py 다운로드

wget https://bootstrap.pypa.io/get-pip.py
python3 get-pip.py --user

중간에 이런 에러가 뜨길래

ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.
launchpadlib 1.10.13 requires testresources, which is not installed.

dependency를 추가해줬다.

sudo apt install python3-testresources

pip 설치

python3 -m pip install --user --upgrade pip

버전 확인

python3 -m pip --version

virtualenv 설치

근데 pip 대신에 pipx를 추천하는 사이트도 있었다. 나중에 영향받지 않고 virtualenv를 업그레이드할 수 있기 때문이라고 함.

그렇지만 그냥 공식 사이트를 참고해서 받았다.

python3 -m pip install --user virtualenv

 

읽어주셔서 감사합니다 :)

관련글 더보기

댓글 영역