WSL에서 Python 개발환경 깔끔하게 만들기

우분투에 이미 들어 있는 python3, python과 python3 명령의 차이, pip 설치, 그리고 가상환경(venv)으로 프로젝트를 격리하는 흐름까지 입문자 기준으로 깔끔하게 정리했습니다.

왜 필요한가 · 시스템 파이썬을 직접 건드리면 운영체제 도구까지 꼬일 수 있어, 처음부터 가상환경으로 격리하는 습관을 들이는 것이 안전하기 때문입니다.

누구에게 · 우분투에서 파이썬을 막 시작하려는데 python과 python3, pip, 가상환경 개념이 아직 헷갈리는 입문자

읽고 나면 · 시스템 파이썬을 건드리지 않고, 프로젝트별 가상환경을 만들어 활성화하며 깔끔하게 개발을 시작할 수 있습니다.

핵심 요약

  • 우분투에는 보통 python3가 이미 들어 있어, 별도 설치 없이 바로 확인부터 할 수 있습니다.
  • 환경에 따라 python 명령이 없을 수 있어, 입문 단계에서는 python3로 명확히 부르는 편이 안전합니다.
  • 패키지 설치 도구인 pip은 python3-pip로 설치하며, 시스템 파이썬을 직접 어지럽히지 않는 것이 핵심입니다.
  • 가상환경(venv)으로 프로젝트마다 의존성을 격리하면, 프로젝트 간 충돌을 크게 줄일 수 있습니다.

우분투에서 파이썬을 시작하려고 보면 의외로 첫 단계부터 헷갈립니다. 어떤 글은 python, 어떤 글은 python3라고 하고, “시스템 파이썬은 건드리지 말라”는 경고도 자주 보입니다. 이 글은 그 혼란을 입문자 눈높이에서 정리하고, 시스템 파이썬을 안전하게 둔 채 프로젝트별 가상환경으로 깔끔하게 개발을 시작하는 흐름을 따라갑니다. 정확한 버전 번호는 환경마다 다르니 단정하지 않고, 확인 명령 위주로 안내합니다.

우분투에는 이미 파이썬이 있다

WSL 우분투에는 보통 python3가 이미 설치되어 있습니다. 운영체제 자체가 내부적으로 파이썬을 쓰는 부분이 있기 때문입니다. 그래서 첫걸음은 설치가 아니라 “있는지 확인”입니다.

python3 --version

버전 번호가 출력되면 이미 파이썬을 쓸 수 있는 상태입니다. 어떤 버전이 깔려 있는지는 우분투 버전과 시점에 따라 다르므로, 특정 숫자를 단정하기보다 위 명령으로 직접 확인하는 편이 정확합니다.

python과 python3 명령의 차이

입문자가 가장 먼저 부딪히는 벽이 이 부분입니다. 우분투에서는 파이썬을 python3라는 이름으로 부르는 경우가 많고, 환경에 따라 python이라고만 입력하면 “명령을 찾을 수 없다”는 오류가 날 수 있습니다.

  • python3 — 우분투에서 파이썬을 부르는 일반적인 이름입니다.
  • python — 환경에 따라 아예 없거나, 다른 것을 가리킬 수 있습니다.

그래서 입문 단계에서는 항상 python3로 명확히 부르는 것을 권합니다. 인터넷의 예시가 python으로 되어 있다면, 동작하지 않을 때 python3로 바꿔 보면 풀리는 경우가 많습니다.

✍️ 운영자 한마디

예전에 시스템 파이썬에 패키지를 막 깔다가 환경이 꼬인 적이 있어서, 지금은 프로젝트마다 가상환경부터 만드는 습관이 생겼습니다. 처음엔 번거로워 보여도 결국 이게 속 편하더군요.

pip 설치하기

pip은 파이썬 패키지(다른 사람이 만들어 공개한 코드 묶음)를 내려받아 설치해 주는 도구입니다. 환경에 따라 pip이 기본으로 들어 있지 않을 수 있는데, 그럴 때는 아래처럼 설치합니다.

sudo apt update
sudo apt install python3-pip

설치 후에는 보통 pip3 또는 python3 -m pip 형태로 사용합니다. 설치가 됐는지 확인하려면 아래처럼 버전을 출력해 보면 됩니다.

python3 -m pip --version

여기서 한 가지만 기억하면 좋습니다. pip으로 패키지를 시스템 전체에 마구 설치하는 것은 피하는 편이 좋다는 점입니다. 그 이유를 다음 절에서 다룹니다.

시스템 파이썬은 직접 건드리지 말 것

우분투에 이미 깔린 파이썬은 운영체제의 여러 도구가 함께 쓰는 공용 파이썬입니다. 여기에 패키지를 함부로 설치하거나 버전을 강제로 바꾸면, 파이썬과 무관해 보이던 시스템 도구까지 영향을 받아 꼬일 수 있습니다.

그래서 원칙은 단순합니다.

  • 시스템 파이썬에 직접 이것저것 설치하지 않습니다.
  • 내 프로젝트에 필요한 패키지는 프로젝트별 가상환경 안에 담습니다.

이 원칙만 지켜도 “파이썬을 건드렸더니 시스템이 이상해졌다”는 흔한 사고를 대부분 피할 수 있습니다.

가상환경(venv)으로 프로젝트 격리하기

가상환경은 프로젝트마다 독립된 파이썬 작업 공간을 만드는 기능입니다. 프로젝트 A의 패키지와 프로젝트 B의 패키지가 서로 섞이지 않게 칸막이를 치는 셈입니다. 파이썬에는 venv라는 표준 도구가 있어 별도 설치 없이 쓸 수 있는 경우가 많습니다.

가상환경 만들기

프로젝트 폴더 안에서 아래처럼 가상환경을 만듭니다. 여기서는 .venv라는 이름으로 만들었습니다.

python3 -m venv .venv

이 명령은 현재 폴더에 .venv라는 디렉터리를 만들고, 그 안에 프로젝트 전용 파이썬 환경을 꾸려 둡니다.

활성화와 비활성화

만든 가상환경을 “켜는” 단계가 활성화입니다.

source .venv/bin/activate

활성화되면 프롬프트 앞에 보통 (.venv) 같은 표시가 붙습니다. 이 상태에서 pip으로 설치하는 패키지는 시스템이 아니라 이 가상환경 안에만 담깁니다. 작업이 끝나면 아래로 빠져나옵니다.

deactivate

이렇게 프로젝트마다 가상환경을 따로 두면, 한 프로젝트의 패키지 버전이 다른 프로젝트를 망가뜨리는 일을 막을 수 있습니다. 가상환경 폴더(.venv)는 보통 버전 관리(git)에 올리지 않고 제외해 두는 것이 일반적입니다.

초보자가 자주 막히는 부분

  • python 명령이 없다고 당황 — 우분투에서는 python3가 일반적인 이름입니다. python이 안 되면 python3로 바꿔 보세요.
  • 시스템 파이썬에 패키지를 직접 설치 — 공용 파이썬을 어지럽히면 시스템 도구까지 꼬일 수 있습니다. 가상환경 안에 설치하세요.
  • 가상환경을 만들기만 하고 활성화를 안 함source .venv/bin/activate로 켜지 않으면 패키지가 엉뚱한 곳에 설치될 수 있습니다.
  • 터미널을 새로 열면 비활성화됨 — 가상환경은 켜 둔 터미널 기준이라, 새 터미널에서는 다시 활성화해야 합니다.
  • 버전 번호를 글마다 단정 — 깔린 파이썬 버전은 환경에 따라 다르니, 숫자를 외우기보다 python3 --version으로 직접 확인하세요.

파이썬 환경 점검 체크리스트

  • python3 --version 으로 이미 설치된 파이썬을 확인했다
  • 입문 단계에서는 python 대신 python3로 부른다는 점을 안다
  • 필요하면 python3-pip 로 pip을 설치하고 확인했다
  • 시스템 파이썬에 직접 패키지를 설치하지 않기로 했다
  • python3 -m venv .venv 로 가상환경을 만들 수 있다
  • source .venv/bin/activate / deactivate 로 켜고 끌 수 있다

정리

우분투에는 보통 python3가 이미 들어 있으니 첫걸음은 설치가 아니라 확인입니다. 입문 단계에서는 python 대신 python3로 명확히 부르고, pip이 필요하면 python3-pip로 설치합니다. 가장 중요한 원칙은 시스템 파이썬을 직접 어지럽히지 않는 것이며, 그 답이 바로 프로젝트별 가상환경입니다. python3 -m venv로 만들고 activate로 켜는 흐름만 손에 익히면, 프로젝트가 늘어도 의존성 충돌 없이 깔끔하게 관리할 수 있습니다. 버전 같은 세부 사항은 환경마다 다르니, 단정하기보다 확인 명령과 공식 문서를 함께 활용하세요.

자주 묻는 질문

python 명령이 없다고 나오는데 잘못된 건가요?
아닙니다. 우분투에서는 파이썬을 python3라는 이름으로 부르는 경우가 많아, python이라고만 입력하면 명령을 못 찾을 수 있습니다. 입문 단계에서는 python3로 명확히 부르는 편이 혼란이 적습니다.
가상환경을 꼭 써야 하나요? 그냥 전역에 설치하면 안 되나요?
당장은 전역 설치로도 동작할 수 있지만, 프로젝트가 늘면 서로 다른 패키지 버전이 충돌하기 쉽습니다. 가상환경은 프로젝트마다 의존성을 따로 담아 이런 충돌을 막아 주므로, 처음부터 습관을 들이는 편이 좋습니다.

이 글은 입문자 기준으로 이해하기 쉽게 정리했으며, 내용은 운영 과정에서 순차적으로 보완될 수 있습니다. 환경에 따라 화면이나 명령이 다르게 보일 수 있으니, 막히는 부분이 있으면 isense2021@gmail.com 로 알려주세요.