로컬 개발에 유용한 도구

내 컴퓨터에서 Python으로 Exercism 코드를 개발할 때 도움이 되는 유용한 도구예요.


Note

이 문서는 우리 커뮤니티에서 인기 있는 도구들을 모아 놓은 거예요. 꼭 따라야 하는 규칙이거나 모든 도구를 담으려는 것도 아니에요. 여기 소개한 도구들이 제 역할을 잘 해낸다고 생각하지만, 그 밖에도 분명 좋은 도구가 많아요. 추천하고 싶은 에디터, IDE, 도구, 플러그인이 있다면 GitHub에서 이 문서에 자유롭게 추가해 주세요.



살펴보기 전에 최신 버전의 Python이 설치되어 있는지 먼저 확인해요. Exercism 웹 플랫폼은 현재 Python 3.10 - 3.13.5(연습 문제와 테스트)와 Python 3.13.5(도구)를 지원해요. 온라인 테스트 러너는 현재 pytest 8.4.0과 pytest-subtests 0.14.2를 사용해요. 온라인 분석기는 pylint 4.0.4를 사용해요. 로컬에서 다른 버전의 Python, pytest, pylint를 사용하면 웹사이트와 다른 결과가 나올 수 있어요. 더 자세한 내용은 Python 로컬 설치를 참고해요.


가상 환경

Python 가상 환경은 가벼운 런타임과 패키지 격리를 제공해요. 설치한 Python 패키지를 특정 환경 디렉터리 안에 함께 묶어 두기 때문에 프로젝트를 정리하는 데 도움이 돼요. 환경마다 서로 다른 버전의 Python 런타임과 프로젝트나 라이브러리 의존성을 함께 담을 수 있어요. 이렇게 하면 한 프로젝트를 위해 라이브러리를 업그레이드했을 때 다른 프로젝트의 의존성이 "깨지는" 것처럼 생기는 버그와 호환성 문제를 피할 수 있어요.

오늘날에는 다양한 가상 환경 및 가상 환경과 유사한 도구가 쓰이고 있고, 가상 환경 대신 인라인 스크립트 메타데이터, 개발 컨테이너, docker를 사용하려는 움직임도 커지고 있어요. 여러 전략을 시도해 보고 자신의 개발 스타일과 프로젝트 요구에 맞는 방법을 찾는 것이 중요해요. 여기 소개한 방법이 모든 상황에 들어맞거나 유일한 선택지라고 생각하지 마세요. 여기서 다루지 않은 도구에 대한 더 일반적인 설명은 Bas Nijholt의 블로그 글을 확인해 보고, 계속 호기심을 가져봐요.

여기서 다룰 대표적인 가상 환경 도구는 세 가지예요. Python 표준 라이브러리인 venv, conda 패키지 관리자와 (보통) Anaconda Python 배포판을 사용하는 서드파티 conda env, 그리고 서드파티 pip + venv 대체 도구인 uv예요. 세 가지 모두 사용하거나 설치하기가 꽤 간단해요.

또한 PyEnv, Poetry, virtualenvwrapper는 같은 컴퓨터에서 여러 Python 버전과 여러 Python 환경을 관리하는 데 도움이 되는 도구예요.


venv로 가상 환경 만들기

venv로 가상 환경을 만들려면, 환경을 저장할 디렉터리로 cd해요. 이 디렉터리는 프로젝트 코드와 분리된 곳이어야 하고, 소스 컨트롤에 체크인하지 않을 곳이어야 해요. 다음으로, 이 특정 환경을 저장할 폴더 이름과 함께 venv 명령을 실행해요. 일반적인 관례는 그 폴더를 <project-name-here>_venv라고 부르는 거예요:

Windows

PS C:\Users\foobar> py -m venv {name_of_virtualenv}

가상 환경을 활성화하려면 다음 명령을 실행해요:

PS> .\{name_of_virtual_env}\Scripts\activate.bat
(venv) PS> _

Linux/MacOS

$ python3 -m venv {name_of_virtualenv}
created virtual environment ... in 8568ms

가상 환경을 활성화하려면 다음 명령을 실행해요:

$ source {name_of_virtual_env}/bin/activate
(venv) $ _

venv가 활성화되면 환경 "안에서" 패키지 설치를 위한 pip 명령을 실행할 수 있어요. 설치된 패키지는 venv의 Python 버전과 연결되고 {name_of_virtual_env}/Lib 안에 위치해요.

가상 환경을 _비활성화_하려면 activate와 같은 디렉터리에 있는 deactivate 스크립트를 호출하면 돼요.


conda를 사용해 가상 환경 만들기

최신 conda 버전은 miniconda를 통해 설치할 수 있어요. 이 conda 치트시트와 conda 문서가 아주 유용해요.

원래 "과학용 Python"으로 인기 있는 Anaconda distribution을 위한 Python 패키지 관리자로 만들어졌던 conda는 나중에 더 일반화되고 확장됐어요. conda 환경은 venv와 비슷한데, conda는 Python 외에도 여러 프로그래밍 언어를 위한 가상 환경을 만들고 패키지를 설치할 수 있다는 점이 핵심 차이예요.

conda가 지원하는 언어에는 R, JavaScript, Ruby, Fortran, C/C++, Scala, Java 등이 있어요. conda와 venv 명령 비교는 conda 명령 참조를 참고해요.


MacOS/Linux

conda 환경을 만들려면 다음을 입력하되, {name of environment}는 원하는 이름으로, python={version}은 원하는 Python 버전으로 바꿔요. 그 뒤에는 환경 안에 설치하고 싶은 추가 패키지를 붙일 수 있어요:

$ conda create --name {name of environment} python={version} "pytest>6.0" pylint
...

## Package Plan ##

  environment location: /usr/local/anaconda3/envs/test_env

  added / updated specs:
    - pylint
    - pytest[version='>6']
    - python=3.10


The following packages will be downloaded:

    package                    |            build
    ---------------------------|-----------------
    astroid-2.11.1             |  py310h2ec42d9_0         364 KB  conda-forge
    dill-0.3.4                 |     pyhd8ed1ab_0          62 KB  conda-forge
    lazy-object-proxy-1.7.1    |  py310he24745e_0          32 KB  conda-forge
    ....
    additional packages here
    ....
    ------------------------------------------------------------
                                           Total:        21.8 MB

Proceed ([y]/n)? y

Preparing transaction: done
Verifying transaction: done
Executing transaction: done
#
# To activate this environment, use
#
#     $ conda activate test_env
#
# To deactivate an active environment, use
#
#     $ conda deactivate

Windows

Windows에서 conda 환경을 만드는 것은 Linux/MacOS와 같은 일반 명령을 사용해요. 다만, conda를 PATH에 추가하기보다 Anaconda cmd나 powershell 프롬프트를 사용하는 것을 권장해요:

(base) PS C:\Users\foobar> conda create --name {name_of_environment} python={version} "pytest>6" pylint
...

Collecting package metadata (current_repodata.json): done
Solving environment: done

## Package Plan ##

  environment location: C:\ProgramData\Anaconda3\envs\test_env

  added / updated specs:
    - pylint
    - pytest[version='>6']
    - python=3.10


The following packages will be downloaded:

    package                    |            build
    ---------------------------|-----------------
    astroid-2.11.1             |  py310h5588dad_0         364 KB  conda-forge
    attrs-21.4.0               |     pyhd8ed1ab_0          49 KB  conda-forge
    bzip2-1.0.8                |       h8ffe710_4         149 KB  conda-forge
    ...
    additional packages here
    ...
    ------------------------------------------------------------
                                           Total:        37.5 MB

Proceed ([y]/n)? y
...
Preparing transaction: done
Verifying transaction: done
Executing transaction: done
#
# To activate this environment, use
#
#     $ conda activate test_env
#
# To deactivate an active environment, use
#
#     $ conda deactivate

UV

uv로 프로젝트 작업하기: uv

uv는 Rust로 작성된 Astral의 Python 패키지 + 프로젝트 관리 도구예요. pip, venv, poetry 및 기타 Python 패키징/의존성 관리 도구를 대체하도록 설계됐어요. Conda나 Mamba와 달리 uv는 Python에만 특화되어 있어요. 하지만 uv는 Fortran처럼 다른 언어로 작성된 Python 확장 모듈을 빌드하는 것도 지원해요. Astral은 인기 있는 Ruff 린터와 Python 타입 힌트용 정적 타입 검사기인 TY를 개발한 곳이기도 하고, 둘 다 Rust로 작성됐어요.

여기서 자세히 다루기보다는 UV 문서가 설치와 설정에 가장 좋은 자료예요.

가상 환경 래퍼

문서와 배경: virtualenvwrapper.

virtualenvwrapper 패키지는 venv 위에서 동작하며 모든 가상 환경을 한곳에서 관리해요. lsvirtualenv(환경 목록 보기)나 mkvirtualenv(환경 만들기)처럼 리눅스에서 쓰는 것과 비슷한 명령으로 환경을 만들고, 복사하고, 삭제하고, 전환할 수 있어요. 확장 기능을 사용해 추가 관리 도구를 붙일 수도 있어요. 이 튜토리얼을 보고 직접 확장 기능을 만들 수도 있어요.


PyEnv

pyenv는 인기 있는 rbenv/ruby-build 도구를 Python용으로 수정한 포크예요. 기본적으로 전역 및 사용자별로 Python 버전을 설정할 수 있게 해 주는 스크립트와 심(shim) 모음이에요. 한 가지 일을 잘 하는 단일 목적의, 군더더기 없는 도구라는 Unix 전통을 따르려고 해요.

pyenv와 pyenv 문서는 GitHub에서 볼 수 있어요.



에디터와 IDE



Visual Studio Code

Visual Studio Code(VS Code)는 Microsoft가 만든 무료 코드 에디터예요. 가상/conda 환경을 잘 지원하고, docker(via the docker plug-in)도 지원하며, 테스트, 린팅, 포매팅, 웹 개발을 위한 다양한 플러그인으로 확장할 수 있어요.

VS Code용 Python

확장 ID: ms-python.python

VS Code의 Python 확장 헤더

Microsoft의 Python 확장은 VS Code용 공식 Microsoft Python 확장이며, 설치를 적극 권장해요. 환경 관리, 테스트 관리, 린팅, 디버깅 등 다양한 기능을 갖추고 있어요. 최신 릴리스 기준으로, MS Python 확장을 설치하면 pylance(Python 코드를 린팅하고 검증하는 데 인기 있는 패키지)와 jupyter(Jupyter Notebook 작업용)도 함께 내려받아요.

  • 설정 튜토리얼은 여기에서 볼 수 있고, 설정 참조도 아주 유용해요.
  • Python 버전 설정/가상 환경 작업에 대한 정보는 여기에서 볼 수 있어요.
  • VS Code에서 unittest와 pytest를 설정하고 사용하는 방법은 여기에서 볼 수 있어요.

PyCharm

PyCharm은 JetBrains가 만든 IDE(통합 개발 환경)예요. Python을 위해 특별히 만들어졌고 전문가들 사이에서 인기가 많아요 . VS Code처럼 다양한 유료 및 무료 플러그인, 테마, 포매터로 확장할 수 있어요. 유료 버전은 Django 개발, Docker 개발, 데이터베이스 통합도 지원해요.

PyCharm과 Pytest
  • PyCharm에서 pytest를 설정하는 방법은 여기에서 볼 수 있어요.
  • PyCharm은 기본적으로 unittest를 사용하므로, PyCharm에서 사용하는 환경에 pytest가 설치되어 있어야 하고(위의 인터프리터 및 환경 문서 참고), 그런 다음 PyCharm이 이를 가리키도록 해야 해요.
  • GUI에서 직접 테스트 실행하는 것은 정말 쉬워요. 다만 원하는 대로 설정되도록 바탕이 되는 pytest 매개변수를 잘 살펴보는 것을 잊지 마세요.
  • PyCharm에서 테스트 실행과 디버깅에 대한 일반 문서는 여기에서 볼 수 있어요.
  • 추가 디버깅 도구와 안내는 여기에서 볼 수 있어요.

Spyder IDE

Spyder는 과학 커뮤니티를 위해 만들어진 크로스 플랫폼 무료 오픈 소스 Python IDE예요. 보통 Anaconda Python 배포판에 포함되어 있지만, 따로 설치해서 어떤 Python 버전과도 사용할 수 있어요. 최대한의 유연성과 패키지 충돌 방지를 위해 독립 실행형 설치를 권장해요.

Spyder는 venv와 conda 환경을 완전히 지원해요. 통합 IPython 대화형 터미널, 대화형 디버거, 에디터 내 그래프 작성과 데이터 탐색을 위한 풍부한 지원을 갖추고 있어요. 추가 코드 완성과 린팅은 kite를 통해 제공돼요. Jupyter Notebook과 테스트 도구와의 통합은 커뮤니티가 개발한 플러그인을 통해 제공돼요. Spyder API를 사용해 직접 플러그인을 작성할 수도 있어요.


Emacs

Emacs는 Lisp으로 작성된 무료 오픈 소스 텍스트 에디터로, 확장성이 매우 뛰어나요. Real Python에 좋은 설치 및 설정 안내가 있어요.

  • Emacs Wiki에도 Emacs로 Python 프로그래밍을 하는 좋은 안내가 있어요.
  • Full Stack Python에도 Emacs를 시작하는 데 유용한 정보와 링크가 모여 있어요.

Vim

Vim은 Unix 표준 vi 텍스트 에디터의 무료 "개선" 버전이에요. 다양한 운영체제와 Linux/Unix 계열에서 사용할 수 있어요. Real Python에 좋은 설치 및 설정 안내가 있고, vimsheet, glump, rtorr에서 편리한 치트시트를 볼 수 있어요.

vim에서 Python 코드를 편집하는 게 맞지 않다고 생각하더라도, 기본 명령어 몇 가지는 익혀 두는 것을 권장해요. vim이나 vi는 Linux와 Unix 배포판에서 흔히 "기본" 또는 "디폴트" 텍스트 에디터이고, 이런 시스템에서 git 커밋 메시지(등 여러 가지)의 기본 에디터예요. *nix 시스템에서 vi만 있는 상태로 설정 파일을 편집해야 하는 상황이 생길 가능성이 높으니, vim 종료하는 방법을 아는 것은 (적어도) 좋은 자기 방어 수단이에요.


Spacemacs

Spacemacs(github 저장소)는 Emacs와 Vim의 기능을 결합한, 커뮤니티가 이끄는 무료 Emacs 배포판이에요.

  • 공식 문서는 여기에서 볼 수 있어요
  • opensource의 이 안내는 설치와 설정 옵션을 간략히 정리해 줘요.
  • spacemacs python 레이어는 테스트, 린팅, 환경 관리, 코드 포매팅 기능을 추가해요.

Sublime text

Sublime text는 Sublime HQ Pty Ltd가 만든 유료 코딩용 텍스트 에디터예요. VS Code와 Atom과 비슷하고, 사용자 정의를 위한 패키지와 플러그인이 많아요. Python을 사용해 에디터용 플러그인을 직접 개발할 수도 있어요.