웹사이트 검색

일반적인 Python 도구: virtualenv 사용, Pip으로 설치 및 패키지 관리


소개

Python으로 작업할 때, 특히 응용 프로그램 개발 영역에서 다양한 위치나 오픈 소스 코드에서 자주 언급되는 특정 도구가 있습니다. 매우 일반적으로 사용되고 있음에도 불구하고 불행히도 때로는 각 단계를 안내하는 좋은 매뉴얼을 얻기가 어렵습니다. 이는 중요하고 필요한 도구에 익숙해질 때 절대적으로 중요합니다.

이 DigitalOcean 기사에서는 기본 사항뿐만 아니라 인기 있는 Python 도구 및 항목의 논리를 실생활 시나리오에서 사용하는 방법에 대해 설명합니다. 몇 가지 공통 라이브러리 다운로드 및 설치, 가상 환경 설정 및 작업(virtualenv 사용), 자체 애플리케이션 개발 및 생산을 위한 패키지 관리부터 시작하겠습니다.

이 기사는 초보자와 더 깊이 있는 지식을 얻고자 하는 사람들을 대상으로 합니다. 자세한 내용을 보고 배우고 싶으시면 아래 의견란에 자유롭게 제안해 주십시오.

CentOS의 파이썬

CentOS/RHEL 시스템을 사용하는 경우 운영 체제와 함께 제공되는 기본 Python 인터프리터로 작업하지 않아야 합니다. 대신 Python을 직접 설치하도록 선택해야 합니다.

이 작업을 아직 수행하지 않았고 방법을 알아보려면 시작하기 전에 CentOS 6.4에서 Python 2.7.6 및 3.3.3을 설정하는 방법 자습서를 참조하십시오.

마찬가지로 사용자 지정 Python 설치를 사용하여 CentOS에 pip 및 virtualenv를 설치하려면 해당 문서의 지침을 따르십시오.

파이썬과 패키지

Python 응용 프로그램은 단일 파일로 만들 수 있지만 일반적으로 일련의 함수, 객체(클래스), 편리한 도구 및 물론 모듈 내부에 배치된 여러 파일에 분산된 변수로 구성됩니다. . 이러한 모듈은 함께 패키지라고 하는 것을 구성합니다.

패키지를 설치하는 전통적인 방법은 먼저 패키지를 찾은 다음 다운로드하는 것입니다. 실제로 파이썬의 많은 것들과 같기 때문에 부드럽고 단순하게 들리지만 완벽하지는 않습니다.

파일이 준비되고 압축이 풀리면 distutils 모듈을 사용하여 setup.py를 호출하여 설치할 수 있습니다.

패키지 설치 예:

 # Example: cd [package name]
 cd a_package
 python setup.py install

distutils(배포 유틸리티)는 코드 패키징 및 배포에 사용되는 도구 세트입니다. 기본적으로 Python과 함께 제공됩니다(즉, 표준 라이브러리에 포함됨).

위에 설명된 절차의 단순성에도 불구하고 설치에서 추상화된 문제가 프로세스의 다른 곳에 존재한다면 아무 소용이 없습니다. 여기에서 도구를 통한 패키지 관리가 시작되며 다음과 같은 여러 이점이 있습니다.

  • 제거(예: pip uninstall package_x),
  • 버전 관리(예: pip install django==x),
  • 자동 종속성 관리(패키지가 다른 패키지에 종속될 수 있음).

패키지 관리

Python의 패키지는 도구, 라이브러리, 프레임워크 및 애플리케이션이 될 수 있습니다. 언어의 인기와 아름다움을 고려할 때 자신의 프로젝트에 사용할 수 있는 수만 개의 패키지가 있습니다.

패키지 관리 도구

가장 일반적인 두 가지 Python 패키지 관리자는 pipeasy_install입니다. 둘 다 다음과 같은 작업을 통해 사용자를 돕는 것을 목표로 합니다.

  • 다운로드, 설치 및 제거
  • 건물
  • Python 패키지 관리 등

둘 다 외부에서 동일한 작업을 수행하는 것처럼 보일 수 있으며 공통 라이브러리 setuptools에 대한 공동 의존성은 이러한 개념을 증가시킵니다.

그러나 이 경우 차이를 만드는 것은 눈에 보이지 않는 것입니다.

핍 대 easy_install

작업을 위해 만든 첫 번째 도구는 easy_install입니다. 모든 것을 수동으로 수행하는 것과 비교하여 사용하는 것이 안도하고 즐거웠지만 시간이 지남에 따라 특정 측면에서 문제가 있음이 입증되었습니다. 이는 또 다른 패키지 관리자인 pip의 개발 기반을 마련했습니다.

pip(프로젝트 자체에서 정의한 대로)는 easy_install을 대체하며 다음을 포함하되 이에 국한되지 않는 이전 버전에 비해 많은 이점을 제공합니다.

  • 설치하기 전에 모두 다운로드
  • 프로세스 중 유용한 피드백 제공
  • 수행 중인 작업 기록 유지
  • Python 전통에 따라 유용한 오류 메시지 제공
  • virtualenv를 보완하고 매우 잘 작동합니다

pip에 대해 자세히 알아보려면 여기를 클릭하여 PyPI 패키지 색인에 있는 소개를 읽어보십시오.

철저한 핍 사용법

이 섹션에서는 pip에 필요한 종속 항목을 가져오는 방법에 대해 이야기하고 최신 빌드를 설치한 다음 요구 사항 설치, 제거, 고정 및 관리와 같이 제공되는 핵심 기능을 살펴봅니다.

언제 pip를 사용합니까?

서론에서 약속한 대로 실제 시나리오의 예를 제공하는 것을 목표로 합니다.

작은 응용 프로그램 개발을 수행한다고 상상해 보십시오. 로드맵을 설정했으며 모든 것이 순조롭게 진행되고 있습니다. 그런 다음 응용 프로그램에 포함된 경우 큰 도움이 될 수 있는 라이브러리(또는 모듈)를 찾습니다. 우리가 설명한 대로 전통적인 방식으로 다운로드할 수 있습니다. 그러나 처리해야 하는 패키지가 하나가 아니라 3개, 4개 또는 20개이면 이 프로세스가 번거로워집니다. 관리(예: 업데이트, 제거, 교체, 다른 버전 사용)를 포함하면 패키지 관리자인 pip를 사용하여 중복되는 처리해야 할 문제를 확인할 수 있습니다.

핍 설치

pip를 설치하려면 먼저 종속성을 관리해야 합니다. 걱정하지 마십시오. 매우 쉽습니다.

설정 도구

위에서 설명한 것처럼 pip의 종속성 중 하나는 setuptools 라이브러리입니다. 이것은 distutils라고 하는 Python의 배포 유틸리티 도구 세트의 (표준) 기능을 기반으로 합니다. 기본적으로 distils가 제공되므로 남은 것은 setuptools뿐입니다.

curl을 사용하여 setuptools용 설치 파일을 안전하게 다운로드할 것입니다. cURL은 다양한 프로토콜(예: HTTP와 같은 응용 프로그램 간의 데이터 교환을 위한 공통 언어)을 통한 데이터 전송을 허용하는 시스템 라이브러리입니다. 소스에서 SSL 인증서를 확인하고 데이터를 Python 인터프리터로 전달합니다.

Python 인터프리터가 실행할 이러한 설정 파일은 시스템에 최신 안정 버전을 설정할 때 설치 프로세스를 자동화합니다.

다음 명령을 실행합니다.

 curl https://bitbucket.org/pypa/setuptools/raw/bootstrap/ez_setup.py | python -

이 설치를 통해 시스템 전체에서 pip를 전역적으로 사용할 수 있습니다. 그러나 이것은 다른 패키지를 설치하는 데 선호되는 방법이 아닙니다. 권장되는 것은 항상 독립형 Python 환경인 virtualenv를 사용하는 것입니다. 다음 섹션에서 이에 대해 이야기하겠습니다.

참고: 다운로드를 계속하려면 슈퍼 사용자 권한을 명시적으로 얻어야 할 수도 있습니다. 이 경우 다음을 사용하는 것이 좋습니다.

 curl https://bitbucket.org/pypa/setuptools/raw/bootstrap/ez_setup.py | sudo python -

단일 종속성을 설치한 후 이제 pip 다운로드 및 설정을 계속할 수 있습니다.

설치 파일을 안전하게 다운로드하고 설치하기 위해 curl을 다시 사용할 것입니다.

다음 명령을 실행합니다.

 curl https://raw.github.com/pypa/pip/master/contrib/get-pip.py | python -

pip의 기본 설치 폴더는 다음 위치에 있습니다.

/usr/local/bin

전체 경로를 지정하지 않고 사용하려면 PATH에 추가해야 합니다.

PATH 업데이트 중:

 export PATH="/usr/local/bin:$PATH"

이 단계를 완료하면 pip로 작업할 준비가 된 것입니다.

핍 사용

pip를 사용하는 것은 정말 재미있고 두통이 없는 것으로 간주될 수 있습니다. 과거에 매우 불필요한 문제를 처리했고 그 이유를 이해조차 하지 못했다면 pip는 이러한 문제를 최소한으로 유지하도록 보장할 것입니다.

pip를 사용하여 패키지 설치

pip는 많은 일을 할 수 있지만 가장 자주 사용되는 기능이 패키지 설치라고 말하는 것은 실수가 아닙니다. 이 작업을 처리할 수 있는 몇 가지 방법이 있습니다.

패키지 찾기 및 설치:

 # Example: pip install [package name]
 # Let's install the excellent *requests* library
 pip install requests

특정 버전 찾기 및 설치:

 # Example: pip install [package name]==[version]
 # Let's install version 2.0.0. of requests
 pip install requests==2.0.0

URL 또는 VCS 저장소에서 설치:

 # Example: pip install [url]
 # Let's install virtualenv
 pip install https://github.com/pypa/virtualenv/tarball/1.9.X

virtualenv 내부에 설치:

 # Example: pip install [env name] [package name]
 # This will either install inside an environment, or create one
 # Let's install requests inside a virtualenv called *venv*
 pip install -E venv requests

pip로 패키지 제거:

pip의 두 번째로 가장 일반적인 기능은 아마도 패키지 제거일 것입니다.

패키지 제거:

 # Example: pip uninstall [package name]
 # Let's remove requests library
 pip uninstall requests 

pip로 패키지 업그레이드

최신 버전의 애플리케이션을 설치하기 위해 제거하려는 경우 업그레이드를 시도할 수 있습니다.

패키지 업그레이드:

 # Example: pip install --upgrade [package name]
 # Let's upgrade requests library
 pip install --upgrade requests

pip로 패키지 검색

패키지를 제거하거나 업그레이드하기로 결정하기 전에 먼저 패키지를 검색해야 할 필요성을 느낄 수 있습니다.

패키지 검색:

 # Example: pip search [package name]
 # Let's find all django packages
 # This might take a while (there's tonnes of them!)
 pip search django

pip로 설치된 패키지 목록 생성

pip의 가장 뛰어나고 생명을 구하는 능력 중 하나는 설치된 패키지 목록("고정\)을 쉽게 생성할 수 있다는 것입니다. 이것은 종종 요구 사항이라고도 합니다. Python 환경에 따라(가상인지 여부) 또는 글로벌), pip는 하나의 단일 명령으로 설치된 모든 패키지를 나열하는 파일을 생성합니다.

새 목록 만들기(\동결):

참고: 이 명령은 현재 작업 디렉토리에 파일을 출력합니다.

 # Example: pip freeze > [file name.ext]
 # Let's list all the packages currently installed
 pip freeze > package_list.txt

템플릿 위에 목록("동결\) 만들기:

참고: 이 명령은 현재 작업 디렉토리에 파일을 출력합니다.

 # Example: pip freeze -r [existing file.ext] > [filename.ext]
 # Let's append new packages installed after the last freeze
 pip freeze package_list.txt > package_list_new.txt

*pip를 사용하여 목록에서 모든 패키지 설치

가상 환경 내에서 응용 프로그램을 작업할 때 모든 종속성(필수 패키지)이 설치되어 있을 것입니다. 고정을 사용하여 목록을 추출한 후 설치를 통해 다시 설치할 수 있습니다.

목록에서 모든 패키지 설치(\동결):

 # Example: pip install -r [file name.ext]
 # Let's install back all the packages from the previous example
 pip install -r package_list_new.txt

철저한 virtualenv 사용법

virtualenv가 정확히 무엇인지 정의하고 유용한 상황을 정의하는 것으로 시작하겠습니다.

가상 환경:

Python 세계에서 환경Python 프로젝트(응용 프로그램)가 체계적이고 격리된 방식으로 실행되기 위해 필요한 모든 것을 포함하는 폴더(디렉토리)입니다. 시작되면 자동으로 고유한 pip와 함께 고유한 Python 인터프리터(이를 생성하는 데 사용된 것의 복사본)와 함께 제공됩니다.

virtualenv가 해결하는 여러 가지 문제가 있습니다.

  • Python 프로젝트를 위한 새롭고 격리된 환경 만들기
  • 관리자/sudo 권한 없이 패키지를 다운로드할 수 있음
  • 애플리케이션을 쉽게 패키징
  • pip로 만든 단일 프로젝트에 속하는 종속성 목록 만들기
  • pip로 생성된 요구 사항 파일을 사용하여 종속성을 쉽게 복구
  • 시스템 간 이식성 제공

virtualenv를 사용하는 것은 얼마나 많은 일을 하는지에 관계없이 Python 프로젝트 작업에 권장되는 방법입니다. 사용하기 매우 쉽고 일회용으로 사용할 수 있는 훌륭한 도구입니다. pip와 함께 사용하면 정말 놀랍습니다.

시스템에 virtualenv를 설치하는 것으로 시작하겠습니다.

virtualenv 설치

virtualenv를 설치하기 위해 pip에 도움을 요청할 것입니다. Python 인터프리터를 실행하기 위해 전역적으로 사용 가능한 패키지로 설치합니다.

신청서를 받는 방법은 두 가지가 있습니다. 얻을 수 있는 버전은 선택한 버전에 따라 다릅니다.

가장 간단한 방법은 pip를 사용하여 검색, 다운로드 및 설치하는 것입니다. 이것은 최신 안정 버전을 제공하지 않을 수 있습니다.

pip를 사용하여 virtualenv 다운로드:

 # Example: [sudo] pip install virtualenv
 sudo pip install virtualenv

curl을 사용하여 사용 가능한 최신 파일 다운로드:

virtualenv의 최신 릴리스는 1.11.X입니다.

 # Example: [sudo] pip install [github repo]/[version]
 sudo pip install https://github.com/pypa/virtualenv/tarball/1.1.X

virtualenv 사용

이 도구를 사용하는 것은 Python 인터프리터와 pip의 복사본을 포함하는 폴더를 만드는 것으로 구성됩니다. 그런 다음 작업하려면 해당 인터프리터의 위치를 지정하거나 활성화해야 합니다.

가상 환경 내에서 인터프리터를 사용하여 설치하는 모든 응용 프로그램은 해당 위치에 배치됩니다.

pip를 사용하여 목록을 만들면 폴더 안에 있는 항목만 파일로 컴파일됩니다.

기억하세요: 한 환경에서 작업을 마친 후 다른 환경으로 전환하거나 전역적으로 설치된 환경에서 작업하기 전에 해당 환경을 비활성화해야 합니다.

가상 환경(virtualenv) 생성/시작

실행에 사용된 것과 동일한 인터프리터를 사용하여 환경 만들기:

 # Example: virtualenv [folder (env.) name]
 # Let's create an environment called *my_app*
 virtualenv my_app

사용자 지정 Python 인터프리터로 환경 만들기:

 # Example: virtualenv --python=[loc/to/python/] [env. name]
 virtualenv --python=/opt/python-3.3/bin/python my_app

가상 환경 활성화

 # Example: source [env. name]/bin/activate
 # Let's activate the Python environment we just created
 source my_app/bin/activate

활성화하지 않고 가상 환경에서 작업하기

여러 가지 이유로 환경을 사용하기 전에 활성화하지 않도록 선택할 수 있습니다. 이렇게 하면 실행하는 명령에 더 많은 유연성이 제공되지만 매번 올바른 인터프리터를 대상으로 지정해야 합니다.

 # Example: [env. name]/bin/python [arguments]
 my_app/bin/python python_script.py

활성화 없이 환경 내에서 pip 설치 사용

 # Example: [env. name]/bin/pip [command] [arguements]
 # Let's install requests library without activating the env.
 my_app/bin/pip install requests

가상 환경 비활성화:

 # Example: deactivate
 # Let's deactivate the environment from earlier
 deactivate 

제출자: