본문 바로가기

파이썬 튜터리얼 정리 12 가상 환경 및 패키지

https://psklog.tistory.com/58?category=795142

https://docs.python.org/ko/3/tutorial/venv.html


1문제 - 한 번 읽어보자


12. 가상 환경 및 패키지


12.1. 소개

파이썬은 종종 표준 라이브러리 이외 패키지와 모듈을 사용.


응용 프로그램에 '특정 버전'의 라이브러리가 필요

- 특정 버그가 수정된 버전이 필요

- 구 버전을 사용하여 응용 프로그램을 작성할 때


즉, 하나의 파이썬 설치가 모든 응용 프로그램의 요구 사항을 충족시키는 것이 불가능할 수도 있습


응용 프로그램 A에 버전 1.0이 필요하지만, B에 버전 2.0이 필요한 경우, 

- 요구 사항 충돌

- 버전 1.0 또는 2.0을 설치하면 어느 한 응용 프로그램은 실행 x


 해결책은 '가상 환경' 을 만드는 것.


: '특정 버전 파이썬 설치'와 여러 '추가 패키지'를 포함하는 디렉토리 트리입니다.


서로 다른 응용 프로그램은 각각 가상 환경을 사용할 수 있습니다. 


프로그램 A - 버전 1.0 / 프로그램 B - 버전 2.0이 있는 다른 가상 환경이 있을 수 있습니다. 

응용 프로그램 B에서 라이브러리를 버전 3.0으로 업그레이드해야 하는 경우, 

응용 프로그램 A의 환경에 영향을 미치지 않습니다.



12.2. 가상 환경 만들기


venv

가상 환경을 생성/관리 모듈 : venv

- venv 는 최신 버전의 파이썬을 설치.

- 여러 버전의 파이썬이 있는 경우, 원하는 버전을 실행하여 버전을 선택할 수 있음.


디렉토리 결정 후, 

venv 모듈 실행 - 디렉토리 경로를 인자로 전달:

python3 -m venv tutorial-env

- 존재하지 않는다면 tutorial-env 디렉토리 생성

- 안에 파이썬 인터프리터의 사본 / 표준 라이브러리 및 지원 파일이 들어있는 디렉토리 생성



가상 환경을 만들었으면, 

'가상 환경을 활성화'할 수 있습니다.

윈도우)

tutorial-env\Scripts\activate.bat

Unix 또는 MacOS)

source tutorial-env/bin/activate

(이 스크립트는 bash 셸을 위해 작성된 것으로, 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']
>>>



12.3. pip로 패키지 관리하기


pip 

 : 패키지를 설치, 업그레이드 및 제거


기본적으로 pip 는 Python Package Index, <https://pypi.org>, 에서 패키지를 설치합니다. 

웹 브라우저에서 파이썬 패키지 색인을 살펴보거나, pip의 제한된 검색 기능을 사용할 수 있습니다:

(tutorial-env) $ pip search astronomy
skyfield               - Elegant astronomy for Python
gary                   - Galactic astronomy and gravitational dynamics.
novas                  - The United States Naval Observatory NOVAS astronomy library
astroobs               - Provides astronomy ephemeris to plan telescope observations
PyAstronomy            - A collection of astronomy related tools for Python.
...


pip : "search", "install", "uninstall", "freeze"

(pip 에 대한 완전한 문서는 파이썬 모듈 설치하기 지침을 보면 됩니다.)


pip install 패키지이름

패키지 '이름 지정'하여 '최신 버전 패키지' 설치 가능

(tutorial-env) $ 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


pip install 패키지이름 == ver.No

패키지 이름 뒤 '== 버전 번호'를 붙여 특정 버전의 패키지 설치 가능

(tutorial-env) $ 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

이 명령을 다시 실행하면, pip 는 요청한 버전이 이미 설치되어 있음을 알리고, 아무것도 하지 않습니다. 


pip install --upgrade 패키지이름

 pip install --upgrade 를 실행하여 패키지를 최신 버전으로 업그레이드할 수 있습니다:

(tutorial-env) $ 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


pip uninstall 패키지이름

pip uninstall 다음에 하나 이상의 패키지 이름이 오면 가상 환경에서 패키지가 제거


pip show 패키지이름

pip show 는 패키지 정보를 표시

(tutorial-env) $ 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:


pip list

pip list 는 가상 환경에 설치된 모든 패키지 표시

(tutorial-env) $ pip list
novas (3.1.1.3)
numpy (1.9.2)
pip (7.0.3)
requests (2.7.0)
setuptools (16.0)


pip freeze 패키지이름

pip freeze 는 설치된 패키지의 비슷한 목록 리스트, pipinstall 형식 사용. 일반적으로 이 목록을 requirements.txt 파일에 넣는 것입니다:

(tutorial-env) $ pip freeze > requirements.txt
(tutorial-env) $ cat requirements.txt
novas==3.1.1.3
numpy==1.9.2
requests==2.7.0

requirements.txt 는 버전 제어에 커밋되어 응용 프로그램 일부로 제공.



사용자는 install -r 로 모든 필요한 패키지를 설치

(tutorial-env) $ 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.0

pip 에는 더 많은 옵션이 있습니다. pip 에 대한 완전한 문서는 파이썬 모듈 설치하기 지침을 참고하세요. 패키지를 작성했을 때 파이썬 패키지 색인에서 사용할 수 있게 하려면, 파이썬 모듈 배포하기 지침을 참고하세요.