12. 仮想環境とパッケージ—Pythonドキュメント

提供:Dev Guides
< PythonPython/docs/3.8/tutorial/venv
移動先:案内検索

12.12。 仮想環境とパッケージ

12.1。 序章

Pythonアプリケーションは、多くの場合、標準ライブラリの一部として提供されていないパッケージやモジュールを使用します。 アプリケーションは、特定のバグを修正する必要がある場合や、ライブラリのインターフェイスの廃止バージョンを使用してアプリケーションを作成する場合があるため、特定のバージョンのライブラリが必要になる場合があります。

これは、1つのPythonインストールですべてのアプリケーションの要件を満たすことができない場合があることを意味します。 アプリケーションAが特定のモジュールのバージョン1.0を必要としているが、アプリケーションBがバージョン2.0を必要としている場合、要件は矛盾しており、バージョン1.0または2.0のいずれかをインストールすると、1つのアプリケーションを実行できなくなります。

この問題の解決策は、仮想環境を作成することです。これは、特定のバージョンのPython用のPythonインストールと、いくつかの追加パッケージを含む自己完結型のディレクトリツリーです。

その後、さまざまなアプリケーションがさまざまな仮想環境を使用できます。 競合する要件の以前の例を解決するために、アプリケーションAにバージョン1.0の独自の仮想環境をインストールし、アプリケーションBにバージョン2.0の別の仮想環境をインストールすることができます。 アプリケーションBでライブラリをバージョン3.0にアップグレードする必要がある場合、これはアプリケーションAの環境には影響しません。


12.2。 仮想環境の作成

仮想環境の作成と管理に使用されるモジュールは、 venv と呼ばれます。 venv は通常、利用可能な最新バージョンのPythonをインストールします。 システムに複数のバージョンのPythonがある場合は、python3または任意のバージョンを実行して、特定のPythonバージョンを選択できます。

仮想環境を作成するには、仮想環境を配置するディレクトリを決定し、 venv モジュールをディレクトリパスを使用してスクリプトとして実行します。

python3 -m venv tutorial-env

これにより、tutorial-envディレクトリが存在しない場合は作成され、Pythonインタープリターのコピー、標準ライブラリ、およびさまざまなサポートファイルを含むディレクトリも作成されます。

仮想環境の一般的なディレクトリの場所は.venvです。 この名前は、ディレクトリが通常シェルに隠されているため、ディレクトリが存在する理由を説明する名前を付けながら、邪魔にならないようにします。 また、一部のツールがサポートする.env環境変数定義ファイルとの衝突を防ぎます。

仮想環境を作成したら、それをアクティブ化できます。

Windowsでは、次を実行します。

tutorial-env\Scripts\activate.bat

UnixまたはMacOSでは、次のコマンドを実行します。

source tutorial-env/bin/activate

(このスクリプトはbashシェル用に書かれています。 csh または fish シェルを使用する場合は、代わりにactivate.cshおよびactivate.fishスクリプトを使用する必要があります。)

仮想環境をアクティブ化すると、シェルのプロンプトが変更され、使用している仮想環境が表示されます。また、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 Python PackageIndexからパッケージをインストールします< https://pypi.org >。 WebブラウザでPythonPackage Indexにアクセスすると、Python PackageIndexを参照できます。

pipには、「インストール」、「アンインストール」、「フリーズ」などのサブコマンドがいくつかあります。 (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を実行してパッケージを最新バージョンにアップグレードできます。

(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の後に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: [email protected]
License: Apache 2.0
Location: /Users/akuchling/envs/tutorial-env/lib/python3.4/site-packages
Requires:

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ファイルに入れることです。

(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の完全なドキュメントについては、 Pythonモジュールのインストールガイドを参照してください。 パッケージを作成し、Python Package Indexで利用できるようにする場合は、 Python Modulesの配布ガイドを参照してください。