본문 바로가기

파이썬 튜토리얼 / Pythonチュートリアル 12. 가상 환경 및 패키지 仮想環境とパッケージ

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



12. 가상 환경 및 패키지 仮想環境とパッケージ

12.1. 소개 はじめに

파이썬 응용 프로그램은 종종 표준 라이브러리의 일부로 제공되지 않는 패키지와 모듈을 사용합니다. 응용 프로그램에 특정 버전의 라이브러리가 필요할 수 있는데, 응용 프로그램에 특정 버그가 수정된 버전이 필요하거나, 라이브러리 인터페이스의 구식 버전을 사용하여 응용 프로그램을 작성할 수도 있기 때문입니다.


Python アプリケーションはよく標準ライブラリ以外のパッケージやモジュールを利用します。またアプリケーションがあるバグ修正を必要としていたり、過去のバージョンのインターフェイスに依存しているために、ライブラリの特定のバージョンを必要とすることもあります。



즉, 하나의 파이썬 설치가 모든 응용 프로그램의 요구 사항을 충족시키는 것이 불가능할 수도 있습니다. 응용 프로그램 A에 특정 모듈의 버전 1.0이 필요하지만, 응용 프로그램 B에 버전 2.0이 필요한 경우, 요구 사항이 충돌하고, 버전 1.0 또는 2.0을 설치하면 어느 한 응용 프로그램은 실행할 수 없게 됩니다.


そのため、1つのインストールされたPythonが全てのアプリケーションの要求に対応することは不可能です。もしアプリケーションAがあるモジュールのバージョン 1.0 を要求していて、別のアプリケーションBが同じモジュールのバージョン 2.0 を要求している場合、2つの要求は衝突していて、1.0 と 2.0 のどちらかのバージョンをインストールしても片方のアプリケーションが動きません。



이 문제에 대한 해결책은 가상 환경 을 만드는 것입니다. 이 가상 환경은 특정 버전 파이썬 설치와 여러 추가 패키지를 포함하는 완비된 디렉터리 트리입니다.


この問題の解決策は 仮想環境 を作ることです。仮想環境とは、特定のバージョンの Python と幾つかの追加パッケージを含んだ Python インストールを構成するディレクトリです。



서로 다른 응용 프로그램은 서로 다른 가상 환경을 사용할 수 있습니다. 앞서 본 상충하는 요구 사항의 예를 해결하기 위해, 응용 프로그램 A에는 버전 1.0이 설치된 자체 가상 환경이 있고, 응용 프로그램 B에는 버전 2.0이 있는 다른 가상 환경이 있을 수 있습니다. 응용 프로그램 B에서 라이브러리를 버전 3.0으로 업그레이드해야 하는 경우, 응용 프로그램 A의 환경에 영향을 미치지 않습니다.


別のアプリケーションはそれぞれ別の仮想環境を使うことができます。先の例にあった要求の衝突を解決する場合、アプリケーションAが固有の仮想環境を持ってそこにライブラリのバージョン 1.0 をインストールし、アプリケーションBが持つ別の仮想環境にライブラリのバージョン 2.0 をインストールすることができます。そしてアプリケーションBがライブラリのバージョンを 3.0 に更新することを要求する場合も、アプリケーションAに影響しません。


12.2. 가상 환경 만들기 仮想環境の作成

가상 환경을 만들고 관리하는 데 사용되는 모듈은 venv 라고 합니다. venv 는 보통 여러분이 사용할 수 있는 최신 버전의 파이썬을 설치합니다. 시스템에 여러 버전의 파이썬이 있는 경우, python3 또는 원하는 버전을 실행하여 특정 파이썬 버전을 선택할 수 있습니다.

仮想環境の作成と管理を行うためのモジュールが venv です。 venv は通常利用可能なもっとも新しいバージョンの Python をインストールします。複数のバージョンの Python がインストールされている場合、 python3 のように利用したいバージョンを指定して実行することで Python バージョンを選択できます。



가상 환경을 만들려면, 원하는 디렉터리를 결정하고, venv 모듈을 스크립트로 실행하는데 디렉터리 경로를 명령행 인자로 전달합니다:


仮想環境を作るには、仮想環境を置くディレクトリを決めて、 そのディレクトリのパスを指定して、 venv をスクリプトとして実行します:


python3 -m venv tutorial-env

존재하지 않는다면 tutorial-env 디렉터리를 만들고, 그 안에 파이썬 인터프리터의 사본, 표준 라이브러리 및 다양한 지원 파일이 들어있는 디렉터리들을 만듭니다.

가상 환경을 만들었으면, 가상 환경을 활성화할 수 있습니다.

윈도우에서 이렇게 실행합니다:


これは tutorial-env ディレクトリがなければ作成して、その中に Python インタプリタ、標準ライブラリ、その他関連するファイルを含むサブディレクトリを作ります。

仮想環境を作ったら、それを有効化する必要があります。

Windows の場合:



tutorial-env\Scripts\activate.bat

Unix 또는 MacOS에서 이렇게 실행합니다:

Unix や Mac OS の場合:

source tutorial-env/bin/activate

(이 스크립트는 bash 셸을 위해 작성된 것으로, csh 또는 fish 셸을 사용하는 경우에는, 대신 activate.csh 와 activate.fish 스크립트를 사용해야 합니다.)


(このスクリプトは bash shell で書かれています。 csh や fish を利用している場合、代わりに利用できる activate.csh と activate.fish スクリプトがあります。)



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


仮想環境を有効化すると、シェルのプロンプトに利用中の仮想環境が表示されるようになり、python を実行するとその仮想環境の 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 라는 프로그램을 사용하여 패키지를 설치, 업그레이드 및 제거할 수 있습니다. 기본적으로 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 は "search", "install", "uninstall", "freeze" など、いくつかのサブコマンドを持っています。 (pip の完全なドキュメントは Python モジュールのインストール ガイドを参照してください。)


패키지 이름을 지정하여 최신 버전의 패키지를 설치할 수 있습니다:

パッケージ名を指定してそのパッケージの最新版をインストールすることができます:

(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

패키지 이름 뒤에 == 과 버전 번호를 붙여 특정 버전의 패키지를 설치할 수도 있습니다:


パッケージ名のあとに == とバージョン番号を付けることで、特定のバージョンのパッケージをインストールすることもできます:

(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 は要求されたバージョンがインストール済みだと表示して何もしません。別のバージョン番号を指定すればそのバージョンをインストールしますし、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 show 는 특정 패키지에 대한 정보를 표시합니다:


pip uninstall コマンドに削除するパッケージ名を1つ以上指定します。

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 install 이 기대하는 형식을 사용합니다. 일반적인 규칙은 이 목록을 requirements.txt 파일에 넣는 것입니다:


pip freeze はインストールされたパッケージ一覧を、pip install が解釈するフォーマットで生成します。一般的な慣習として、このリストを 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 로 모든 필요한 패키지를 설치할 수 있습니다:


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 에 대한 완전한 문서는 파이썬 모듈 설치하기 지침을 참고하세요. 패키지를 작성했을 때 파이썬 패키지 색인에서 사용할 수 있게 하려면, 파이썬 모듈 배포하기 지침을 참고하세요.


pip にはたくさんのオプションがあります。 pip の完全なドキュメントは Python モジュールのインストール を参照してください。パッケージを作成してそれを Python Package Index で公開したい場合、 Python モジュールの配布 ガイドを参照してください。