[10장] 공식 문서로 알아보는 Python Virtual Environments 와 Packages의 모든 것

jun young Yim
July 26, 2025

[10장] 공식 문서로 알아보는 Python Virtual Environments 와 Packages의 모든 것

Use Original Cover Image
Type
Post
Children
Language
ko
Tags
Python
Virtual Environments
Packages
pip
Authors
jun young Yim
Published
July 26, 2025

개요

본 글은 Python v3.13 공식 Tutorial의 12. Virtual Environments and Packages 의 모든 내용을 보다 이해하기 쉽게 정리한 글이다.
 

1. 소개

python은 종종 표준 라이브러리에 포함되지 않은 패키지와 모듈을 사용한다(NumPy, pandas, scikit-learn, Py Torch). 이때 특정 버전의 python에서만 적용할 수 있다. 그래서 어플리케이션이 요구하는 버전이 다르면 하나의 Python으로 요구조건을 모두 만족시킬 수는 없다.
가상환경을 만듬으로써 이 문제를 해결할 수 있다. 이는 특정 버전의 python과 그에 필요한 여러 패키지를 포함한 독립적인 디렉터리 구조를 의미한다. 가상 환경을 사용하면 서로 다른 어플리케이션들은 각자의 환경을 가지게 되어 라이브러리가 업그레이드 해도 아무런 영향을 주지 않는다.

2. 가상 환경 만들기

가상환경을 만들고 관리하는 모듈은 venv이다. venv는 자신의 버전에 맞는 Python 버전을 설치할 것이다. 가상환경을 만들기 위해서는 먼저 가상 환경을 둘 디렉토리를 정하고 venv 모듈을 스크립트로 실행해야한다.
python -m venv tutorial-env
이 명령은 tutorial-env 을 만들 것이다. 만약 존재하지 않는다면 python interpreter의 복사본과 여러가지 지원파일을 포함한 하위 디렉터리도 생성할 것이다. 가상환경 디렉터리 위치는 보통 .venv 이다. 이 이름은 shell에서 숨겨지는 것을 막고 .env 파일과 충돌을 피할 수 있을 것이다.
가상환경을 설치했다면 그것을 활성화 시킬 수 있다.
Window용
tutorial-env\Scripts\activate
Unix나 MacOS용
source tutorial-env/bin/activate
(csh나 fish 셸을 쓴다면, activate.csh 또는 activate.fish 스크립트를 사용하면 된다.) 활성화하면 셸 프롬프트에 가상 환경 이름이 표시되고, python 명령어가 해당 가상 환경의 파이썬 인터프리터 및 설치된 패키지를 가리키도록 변경됩니다.
예시:
$ source ~/envs/tutorial-env/bin/activate (tutorial-env) $ python Python 3.5.1 (default, May 6 2016, 10:59:36)
import sys
sys.path
💡
['', '/usr/local/lib/python35.zip', ..., '~/envs/tutorial-env/lib/python3.5/site-packages']
비활성화 시키고 싶으면 터미널에 다음을 입력하자
deactivate

3.pip로 패키지 관리하기

pip는 패키지를 설치, 업그레이드, 제거하는 프로그램입니다. 기본적으로 pip는 Python Package Index(PyPI)에서 패키지를 가져와 설치합니다. 웹 브라우저로 PyPI 사이트에 접속하면 패키지를 검색해볼 수 있습니다.
pip는 패키지를 설치, 업그레이드 제거하는 프로그램이다. 기본적으로 pip 는 Python Package Index에 설치되어 있을 것이다.
pip에는 다양한 하위 명령어가 있다
  • install
  • uninstall
  • freeze
자세한 건 Installing Pythob Modules 가이드를 참고하자.
패키지의 이름을 지정함으로써 가장 최근 버전을 설치할 수 있다.
(tutorial-env) $ python -m pip install novas Collecting novas Downloading novas-3.1.1.3.tar.gz (136kB) Installing collected packages: novas Running setup.py install for novas Successfully installed novas-3.1.1.3
특정 버전을 설치하고 싶으면 == 뒤에 그 버전의 번호를 붙여 특정 버전을 설치할 수 있다.
(tutorial-env) $ python -m pip install requests==2.6.0 Collecting requests==2.6.0 Using cached requests-2.6.0-py2.py3-none-any.whl Installing collected packages: requests Successfully installed requests-2.6.0
위의 예시에서는 2.6.0버전이 설치되었다.
이미 설치된 버전을 설치하라고 요청하면 pip 는 이미 설치됬음을 알아체서 아무것도 하지 않는다.
python -m pip install --upgrade 를 통해 최신버전으로 업데이트 할 수 있다.
(tutorial-env) $ python -m pip install --upgrade requests Collecting requests Installing collected packages: requests Found existing installation: requests 2.6.0 Uninstalling requests-2.6.0: Successfully uninstalled requests-2.6.0 Successfully installed requests-2.7.0
위 코드에서는 2.6.0버전이 제거되고 2.7.0버전이 설치되었다.
python -m pip uninstall 뒤에 버전을 적으면 그 버전이 삭제된다.
python -m pip show 는 특정 버전의 패키지의 정보를 보여준다.
(tutorial-env) $ python -m pip show requests --- Metadata-Version: 2.0 Name: requests Version: 2.7.0 Summary: Python HTTP for Humans. Home-page: http://python-requests.org Author: Kenneth Reitz Author-email: me@kennethreitz.com License: Apache 2.0 Location: /Users/akuchling/envs/tutorial-env/lib/python3.4/site-packages Requires:
python -m pip list 는 설치된 모든 패키지의 정보를 보여준다.
(tutorial-env) $ python -m pip list novas (3.1.1.3) numpy (1.9.2) pip (7.0.3) requests (2.7.0) setuptools (16.0)
python -m pip freeze 는 list와 유사하지만, 패키지 설치 시 사용하는 형식으로 출력한다. 이 출력은 requirements.txt 형식으로 저장하는 것이 일반적이다.
(tutorial-env) $ python -m pip freeze > requirements.txt (tutorial-env) $ cat requirements.txt novas==3.1.1.3 numpy==1.9.2 requests==2.7.0
install -r 을 사용하면 requirements.txt 의 모든 파일을 설치한다.
(tutorial-env) $ python -m pip install -r requirements.txt Collecting novas==3.1.1.3 (from -r requirements.txt (line 1)) ... Collecting numpy==1.9.2 (from -r requirements.txt (line 2)) ... Collecting requests==2.7.0 (from -r requirements.txt (line 3)) ... Installing collected packages: novas, numpy, requests Running setup.py install for novas Successfully installed novas-3.1.1.3 numpy-1.9.2 requests-2.7.0d
Installing Python ModulesPython packaging user guide에서 더 많은 기능을 알 수 있다.

Reference

[1] Python Software Foundation. "12. Virtual Environments and PackagesThe Python Tutorial, version 3.13, Python Software Foundation, 2024, https://docs.python.org/3.13/tutorial/introduction.html, Accessed 10 July 2025.