본문 바로가기
환경설정

우분투 Python 환경설정. pip, venv, 자동실행 스크립트까지

by TechTrekker 2025. 10. 10.

우분투 Python 환경설정. pip, venv, 자동실행 스크립트까지

매번 터미널 열 때마다 source venv/bin/activate 치는 거 귀찮지 않나요? 저도 프로젝트 여러 개 돌리다 보니 디렉토리 옮길 때마다 가상환경 켜는 게 정말 번거롭더라고요. VSCode는 알아서 인식해주는데 터미널 작업할 때는 매번 수동으로 해야 하니까요. 그래서 이번에 direnv로 자동화 설정했는데, 정말 편해졌습니다.

 

자동실행 핵심 설정

direnv 설치 후 .bashrc에 hook 등록하고, 프로젝트 폴더에 .envrc 파일만 만들면 됩니다. 디렉토리 이동만으로 가상환경이 자동 활성화되는 구조입니다.

pip이란?

pip는 Python Package Installer의 약자입니다. Python으로 개발할 때 필요한 외부 라이브러리를 설치하고 관리하는 도구입니다.

예를 들어 requests, numpy, pandas 같은 라이브러리를 사용하려면 pip로 설치해야 합니다.

pip install requests

이런 식으로 명령어 한 줄이면 라이브러리가 설치됩니다. pip 없이는 Python 개발이 사실상 불가능합니다.

venv(가상환경)는 왜 써야 하나?

venv는 Python 프로젝트마다 독립된 개발환경을 만들어주는 도구입니다.

프로젝트 A에서는 Django 3.2를 쓰고, 프로젝트 B에서는 Django 4.0을 써야 한다면? 가상환경 없이는 버전 충돌이 일어납니다.

venv를 쓰면:

  • 프로젝트마다 다른 버전의 라이브러리 사용 가능
  • 전역 Python 환경 오염 방지
  • requirements.txt로 의존성 관리 용이

실무에서는 필수입니다.

Python3와 pip3 설치

우분투에는 Python이 기본으로 깔려 있지만, pip는 별도 설치가 필요합니다.

sudo apt update
sudo apt install python3
sudo apt install python3-pip

sudo apt update는 패키지 목록을 최신화합니다. 이걸 먼저 해야 최신 버전 설치가 가능합니다.

sudo apt install python3는 Python3를 설치합니다. 이미 설치되어 있다면 스킵됩니다.

sudo apt install python3-pip는 pip3를 설치합니다. Python3용 패키지 관리자입니다.

 

VSCode에서는 어떻게 동작하나?

VSCode는 프로젝트 폴더의 가상환경을 자동으로 인식합니다.

.venv 또는 venv 폴더가 있으면 VSCode가 알아서 인터프리터를 해당 가상환경으로 설정합니다. 터미널을 열면 자동으로 activate된 상태로 시작됩니다.

그래서 VSCode 사용자는 별도 설정 없이도 편하게 작업할 수 있습니다.

하지만 일반 터미널에서는? 매번 수동으로 activate 명령어를 쳐야 합니다. 이게 귀찮아서 direnv를 쓰는 겁니다.

 

direnv로 자동실행 설정하기

direnv는 디렉토리별로 환경변수를 자동으로 로드하는 도구입니다. 폴더에 들어가면 자동으로 스크립트를 실행시킬 수 있습니다.

sudo apt install direnv

direnv를 설치합니다. 이 도구가 디렉토리 진입 시 .envrc 파일을 읽어서 실행합니다.

echo 'eval "$(direnv hook bash)"' >> ~/.bashrc

bashrc에 direnv hook을 등록합니다. 이렇게 해야 터미널이 direnv를 인식합니다. >> 연산자는 파일 끝에 내용을 추가한다는 뜻입니다.

source ~/.bashrc

변경된 bashrc를 즉시 적용합니다. source 명령어는 설정 파일을 다시 읽어서 현재 쉘에 반영합니다. 터미널을 재시작하는 효과와 동일합니다.

 

프로젝트 폴더에 .envrc 설정

cd ~/[작업폴더]

작업할 프로젝트 폴더로 이동합니다. [작업폴더] 부분은 본인의 프로젝트 디렉토리명으로 바꿔주세요.

echo 'source venv/bin/activate' > .envrc

.envrc 파일을 생성하고 가상환경 활성화 명령어를 작성합니다. > 연산자는 파일을 새로 만들거나 덮어씁니다. 이 파일이 있으면 direnv가 자동으로 실행합니다.

direnv allow

.envrc 실행 권한을 부여합니다. 보안상 direnv는 명시적으로 allow를 해줘야 스크립트를 실행합니다. 처음 한 번만 하면 됩니다.

 

동작 확인

cd ~/[작업폴더]

프로젝트 폴더로 다시 진입합니다. 이때 direnv가 자동으로 .envrc를 실행해서 가상환경이 활성화됩니다.

echo $VIRTUAL_ENV

가상환경이 활성화되면 VIRTUAL_ENV 환경변수가 설정됩니다. 경로가 출력되면 정상 작동 중입니다.

which python

현재 사용 중인 python 실행파일의 경로를 확인합니다. venv/bin/python으로 나오면 가상환경의 python을 쓰고 있다는 뜻입니다.

 

문제 해결

.envrc 내용 확인

cat .envrc

.envrc 파일 내용을 출력합니다. cat 명령어는 파일 내용을 터미널에 보여줍니다. 반드시 아래 내용만 있어야 합니다.

source venv/bin/activate

이 한 줄만 있으면 됩니다. 다른 내용이 있으면 삭제하거나 주석 처리하세요.

.envrc 재적용

direnv reload

.envrc를 수정했다면 reload로 다시 읽어옵니다. 파일 변경 시 자동으로 감지하지만, 수동으로 재적용하고 싶을 때 사용합니다.

.envrc 비활성화

direnv deny

특정 프로젝트에서 자동 활성화를 끄고 싶다면 deny를 실행합니다. allow의 반대 명령어입니다. 다시 켜려면 direnv allow를 하면 됩니다.

 

정리

이제 프로젝트 폴더로 이동만 하면 가상환경이 자동으로 켜집니다. VSCode에서는 원래 편했지만, 터미널 작업할 때도 똑같이 편해졌습니다.

 

한 번 설정해두면 모든 프로젝트에 적용 가능하니 시간 절약됩니다. pip로 패키지 관리하고, venv로 환경 분리하고, direnv로 자동화까지. 이 세 가지만 알아도 Python 개발환경은 충분합니다.