Setting python venv in Ubuntu 18.04
파이썬 가상 환경 설정하기
Assumptions
| |
은 각자의 환경을 나타낸다..pyvenv
는 파이썬 가상 환경을 모아둔 임의의 디렉토리를 의미한다.
Use venv
- venv 환경으로 쓸 디렉토리를 만든다.
~$ mkdir /.pyvenv
- 디렉토리 만들 때
sudo
명령어를 쓰지 말라. 그러면 디렉토리의 권한이 root에 귀속된다. - 해당 디렉토리로 이동한다.
~$ cd ~/.pyvenv
- 여기서 venv 환경을 만든다.
~$ [sudo] python -m venv |your-venv|
-
위 그림을 보자. 만일
sudo
없이 가상 환경을 만들었다면 해당 폴더는 현재 로그인한 사용자에게 귀속된다. 그런데sudo
로 만들었다면 이는 root에 귀속된다. 이에 따라서 생성된 가상 환경의 사용 조건 및 운용이 달라지게 된다. 그러니까sudo
는 자제하자. 왜? -
VS Code같은 외부 앱과 연동해서 사용할 때 해당 디렉토리를 root가 소유하고 있으면 문제가 발생할 수 있다. 소유자가 아닌 VS Code가 자신이 필요한 python 패키지들을 설치할 수 없게 된다. 특별한 이유가 없다면, 아래와 같이 디렉토리의 소유권을 root가 아니라 로그인한 이용자에게 두도록 하자.1
-
혹시
ls -la
로 조회했을 때 위 그림처럼 root가 소유자라면 다음과 같이 이를 돌리도록 하자.
~$ sudo chown |user|:|user| -R |your-venv|
그림의 예라면 아래와 같이 실행하여 소유자를 root에서 로그인한 이용자로 바꾸자.
~$ sudo chown anarinsk:anarinsk -R venv-with-sudo
Without sudo
-
이제부터는 표준을 따르면 된다.
-
먼저 필요한 venv 환경를 활성화한다. venv 환경 내
bin
디렉토리의 activate를 활성화한다.
~$ source ~/.pyvenv/|your-venv|/bin/activate
- venv가 활성화된 상태에서 pip를 업그레이드하자. 이때 업그레이드되는 pip는 venv 환경 내의 pip다.
~$ (|your-venv|) pip install --upgrade pip
~$ (|your-venv|) pip --version # 업그레이드 확인 용도
- 이후 패키지 설치 등 필요한 작업을 수행한다.
With sudo
sudo
로 가상 환경을 깔았다면 환경의 권한이 root에 귀결된다. 이 녀석을 다시 user 돌려놓도록 하자.
~$ sudo chown |user|:|user| -R |your-venv|
- 이제
sudo
없이 깔았을 때처럼 사용하자.
sudo if you insist
- 만일 여러가지 이유 때문에 디렉토리의 소유권을 변경하지 않으려 한다면, 가상 환경에서 작동하는 pip를 특정해서 업그레이드해야 한다.
~$ ~/.pyvenv/|your-venv|/bin/pip3 install --upgrade pip
- sudo로 절대 pip 업그레이드하지 말 것!
- 기본적으로 가상환경 내의 pip를 활용해서 업그레이드하는 것이다.
pip --version
으로제대로 깔렸는지 확인해보자.