티스토리 뷰

12. 가상 환경 및 패키지

12.1. 소개

  • 머신러닝이나 통계를 포함하여 파이썬에서 표준 라이브러리의 일부로 제공되지 않는 패키지와 모듈을 사용할 떄가 많다.
  • 상황에 따라 라이브러리의 특정 버전이 필요 할 때가 있다.
  • 예를 들어 A프로그램은 L라이브러리 1.0 버전이 필요하지만, B프로그램은 2.1 버전의 라이브러리가 필요할 수도 있기 떄문이다.
  • 이러한 문제의 해결 방법이 바로 가상환경(Virtual Environment)이다.

12.2. 가상환경 만들기

  • 가상환경을 만드는 법은 다음 블로그에 아주 잘 설명이 되어 있다.
    https://tutorial.djangogirls.org/ko/django_installation/
  • 가상 환경을 만들고 관리하는 데 사용되는 모듈을 venv라고 한다. venv는 보통 사용자가 쓸 수 있는 최신 버전의 파이썬을 설치한다. 시스템에 여러 버전의 파이썬이 있다면 원하는 버전의 파이썬을 선택할 수 있다.
  1. 가상환경 만들려면, 원하는 디렉터리를 결정하고, venv 모듈을 스크립트로 실행하는데 디렉터리 경로를 명령어 다음에 넣는다.

    python -m venv directory_name

    해당 이름의 디렉터리가 존재하지 않는다면 directory_name 디렉터리를 만들고, 그 안에 파이썬 인터프리터의 사본, 표준 라이브러리 및 다양한 지원 파일이 들어있는 디렉토리를 만든다.

  2. 가상 환경을 만들었으면, 가상 환경은 다음과 같이 활성화 한다. (윈도우 기준)

    directory_name\Scripts\activate

    쉽게 말하면 가상환경 폴더에 있는 Scripts\activate.bat파일은 cli에서 실행시키면 되는 것이다.

  3. 가상 환경을 활성화하면, 셸의 프롬프트가 변경되어 사용 중인 가상 환경을 보여주고, 환경을 수정하여 python을 실행하면 특정 버전의 파이썬이 실행되도록한다.

    C:\Users\user_name>directory_name\Scripts\activate
    (directory_name) C:\Users\user_name>python
    Python 3.5.1 (default, May  6 2016, 10:59:36)
      ...
    >>> import sys
    >>> sys.path
    ['', '/usr/local/lib/python35.zip', ...,
    '~/envs/directory_name/lib/python3.5/site-packages']
    >>>

12.3. pip로 패키지 관리하기

  • pip라는 프로그램을 사용하여 패키지를 설치, 업그레이드 및 제거할 수 있다.

  • pip는 파이썬 패키지 인덱스(Python Package Index, https://pypi.org)에서 패키지를 설치한다.

  • pip list명령어를 통해 설치된 패키지들과 버전의 리스트를 확인 할 수있다.

    (venv) C:>pip list
    Package                            Version
    ---------------------------------- --------
    alabaster                          0.7.12
    anaconda-client                    1.7.2
    ...
    xlwt                               1.3.0
    zict                               0.1.4
    zipp                               0.3.3
  • pip search <description>을 통해 설명에 해당 검색어를 포함하고 있는 패키지를 검색할 수 있다.

    (venv) C:>pip search 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등의 많은 부속 명령어들을 가지고 있다.

  • 패키지 설치는 install 명령어 뒤에 패키지 이름을 넣어서 할 수 있다.

    (venv) C:>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
  • 패키지 이름 뒤에 ==version_number를 붙여서 특정 버전의 패키지를 설치 가능하다.

    (venv) C:>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
  • 이미 설치 되어있는 패키지와 같은 버전의 패키지를 설치하려고 하면 이미 그 버전이 설치 되어 있음을 아리고 아무것도 하지 않는다.

    (venv) C:>pip install pandas==0.24.2
    Requirement already satisfied: pandas==0.24.2 in c:\programdata\anaconda3\lib\site-packages (0.24.2)
    Requirement already satisfied: pytz>=2011k in c:\programdata\anaconda3\lib\site-packages (from pandas==0.24.2) (2018.9)
    Requirement already satisfied: python-dateutil>=2.5.0 in c:\programdata\anaconda3\lib\site-packages (from pandas==0.24.2) (2.8.0)
    Requirement already satisfied: numpy>=1.12.0 in c:\programdata\anaconda3\lib\site-packages (from pandas==0.24.2) (1.16.2)
    Requirement already satisfied: six>=1.5 in c:\programdata\anaconda3\lib\site-packages (from python-dateutil>=2.5.0->pandas==0.24.2) (1.12.0)
  • pip install --upgrade를 실행하여 패키지를 최신 버전으로 업그레이드 시킬 수 있다.

    (venv) C:>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 package_name을 하면 해당 환경에서 패키지를 제거한다.

    (venv) C:>pip uninstall pandas
  • pip freeze는 설치된 패키지의 리스트와 비슷하게 생겼지만 pip install에서 기대하는 형식으로 출력된다.

    (venv) C:>pip freeze > requirements.txt
    (venv) C:>cat requirements.txt
    novas==3.1.1.3
    numpy==1.9.2
    requests==2.7.0
  • 일반적으로는 이 목록을 requirements.txt파일에 넣어서 프로그램의 일부로 제공하는 것이다. 사용자는 pip install -r "requirements.txt"로 모든 필요한 패키지를 설치할 수 있다.

      (venv) C:>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에는 더 많은 옵션과 명령어들이 있다. 이에 관한 것은 cmd에서 pip help를 입력하여 보거나 파이썬 모듈 설치하기에서 지침을 참고하면 된다. 패키지를 작성했을 때 파이썬 패키지 인덱스에서 사용할 수 있게 하려면, 파이썬 모듈 배포하기 지침을 참고하면 된다.

 

Reference: 파이썬 자습서

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/06   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함