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インタープリターのコピー、標準ライブラリ、およびさまざまなサポートファイルを含むディレクトリも作成されます。
仮想環境を作成したら、それをアクティブ化できます。
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 >。 Python Package Indexにアクセスして、Webブラウザーで参照するか、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
には、「検索」、「インストール」、「アンインストール」、「フリーズ」などのサブコマンドがいくつかあります。 (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の配布ガイドを参照してください。