一般的なPythonツール:virtualenvの使用、Pipを使用したインストール、パッケージの管理
序章
特にアプリケーション開発の分野でPythonを使用する場合、さまざまな場所やオープンソースコードで頻繁に言及される特定のツールがあります。 非常に一般的に使用されていますが、残念ながら、各ステップを順を追って説明する優れたマニュアルを入手するのが難しい場合があります。これは、このような重要で必要なツールに慣れる上で非常に重要です。
このDigitalOceanの記事では、基本的なことだけでなく、一般的なPythonツールやアイテムの背後にあるロジックについても説明し、実際のシナリオでそれらを使用することを目指しています。 まず、いくつかの一般的なライブラリのダウンロードとインストール、仮想環境の設定と操作(virtualenvを使用)、および独自のアプリケーションの開発と本番用のパッケージの管理から始めます。
この記事は、初心者だけでなく、より深い知識を得ようとしている人を対象としています。 詳細をご覧になりたい場合は、下のコメントセクションでお気軽にご提案ください。
CentOS上のPython
CentOS / RHELシステムを使用している場合は、オペレーティングシステムに付属しているデフォルトのPythonインタープリターの使用を控える必要があることに注意してください。 代わりに、Pythonを自分でインストールすることを選択する必要があります。
まだこれを行っておらず、その方法を知りたい場合は、開始する前に、チュートリアル CentOS6.4でPython2.7.6および3.3.3をセットアップする方法を参照してください。
同様に、カスタムPythonインストールを使用してCentOSにpipおよびvirtualenvをインストールするには、その記事の指示に従うことができます。
Pythonとパッケージ
Pythonアプリケーションは単一ファイルで作成できますが、通常、一連の関数、オブジェクト(クラス)、便利なツール、そしてもちろん、複数ファイルに分散する変数で構成されます。 )、をモジュールの中に配置しました。 これらのモジュールは一緒になって、パッケージと呼ばれるものを構成します。
パッケージをインストールする従来の方法では、最初にパッケージを見つけてからダウンロードします。 実際にはは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のパッケージは、ツール、ライブラリ、フレームワーク、およびアプリケーションです。 言語の人気と美しさを考えると、独自のプロジェクトに利用できる何万ものパッケージが利用可能です。
パッケージ管理ツール
最も一般的な2つのPythonパッケージマネージャーは、pipとeasy_installです。 どちらも、次のタスクでユーザーを支援することを目的としています。
- ダウンロード、インストール、アンインストール
- 建物
- Pythonパッケージなどの管理
それらは両方とも外部から同じことをしているように見えるかもしれません、そして共通のライブラリsetuptoolsへのそれらの共同依存はこの概念を増やします。
ただし、この場合、違いを生むのは目から隠されているものであり、その多くも同様です。
pipとeasy_install
タスク用に作成された最初のツールはeasy_installでした。 すべてを手動で行うのに比べて、使用するのは安心で楽しいことでしたが、時間の経過とともに、特定の面で問題があることが判明しました。 これにより、別のパッケージマネージャーであるpipの開発の根拠が生まれました。
pip (プロジェクト自体で定義)は easy_install の代わりになり、前任者に比べて次のような多くの利点があります。
- インストールする前にすべてをダウンロードする
- プロセス中に有用なフィードバックを提供する
- 実行されているアクションの履歴を保持する
- Pythonの伝統に従って有用なエラーメッセージを提供する
- virtualenv を補完し、veryとうまく連携します
pip の詳細については、こちらをクリックして、PyPIパッケージインデックスにある概要を読むことを検討してください。
徹底的なpipハウツー
このセクションでは、 pip に必要な依存関係を取得し、最新のビルドをインストールした後、インストール、アンインストールなどのコア機能のウォークスルーについて説明します。 、凍結および管理要件。
pip はいつ使用しますか?
イントロダクションで約束したように、私たちはあなたに実際のシナリオの例を与えることを目指しています。
あなたが小さなアプリケーションの開発に取り組んでいると想像してみてください。 ロードマップを設定し、すべてが順調に進んでいます。 次に、アプリケーションに含めた場合に非常に役立つライブラリ(またはモジュール)を見つけます。 説明したように、従来の方法でダウンロードできます。 ただし、処理する必要のあるパッケージが1つだけでなく、3つ、4つ、または20つになると、このプロセスは面倒になります。 それらの管理を含める(例: 更新、アンインストール、置換、別のバージョンの使用)、パッケージマネージャーである pip を使用して冗長化された、対処する必要のある問題を確認できます。
pipをインストールしています
pip をインストールするには、最初にその依存関係を処理する必要があります。 でも心配しないでください、それはとても簡単です。
setuptools
上で説明したように、 pip の依存関係の1つは、setuptoolsライブラリです。 これは、Pythonの配布ユーティリティツールセット distutils の(標準)機能に基づいています。 distilsがデフォルトで提供されていることを考えると、必要なのはsetuptoolsだけです。
setuptoolsのセットアップファイルを安全にダウンロードします。 curl
. 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を使用したパッケージのインストール
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 の2番目に一般的な機能は、おそらくパッケージのアンインストールです。
パッケージのアンインストール:
# 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の最も真に例外的で命を救う機能の1つは、インストールされているパッケージのリスト(「フリーズ」)を簡単に作成できることです。 これは、要件とも呼ばれます。 Python環境(仮想環境かグローバル環境か)に応じて、 pip は、1つのコマンドでインストールされたすべてのパッケージをリストするファイルを作成します。
新しいリストの作成(「フリーズ」):
注:このコマンドは、現在の作業ディレクトリにファイルを出力します。
# 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を使用してリストからすべてのパッケージをインストールする
アプリケーションで作業している場合(できれば仮想環境内で)、すべての依存関係(必須パッケージ)がそこにインストールされます。 freeze を使用してそれらのリストを抽出した後、installを使用してそれらを再度インストールできます。
リストからすべてのパッケージをインストールする(「フリーズ」):
# 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 とは何か、そしてそれが役立つ状況を定義することから始めましょう。
virtualenv:
Pythonの世界では、 environment は、Pythonプロジェクト(アプリケーション)が組織化された分離された方法で実行するために必要なすべてのものを含むフォルダー(ディレクトリ)です。 開始されると、独自の pip とともに、独自のPythonインタープリター(作成に使用されたもののコピー)が自動的に付属します。
virtualenvが解決する問題はいくつかあります。
- Pythonプロジェクト用の新鮮で隔離された環境の作成
- admin/sudo権限を必要とせずにパッケージをダウンロードできる
- アプリケーションを簡単にパッケージ化
- pipで作成された単一のプロジェクトに属する依存関係のリストを作成する
- pip で作成された要件ファイルを使用して、依存関係を簡単に回復できます。
- システム間での移植性への道を与える
virtualenv を使用することは、忙しいかもしれない数に関係なく、Pythonプロジェクトを操作するための
システムのvirtualenvのインストールから始めます。
virtualenvのインストール
virtualenv をインストールするには、pipを呼び出してヘルプを求めます。 Pythonインタープリターを実行するためのグローバルに利用可能なパッケージとしてインストールします。
アプリケーションを入手するには2つの方法があります。 取得できるバージョンは、選択したバージョンによって異なります。
最も簡単な方法は、 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のコピーを含むフォルダーを作成するためにツールを取得することで構成されます。 その後、それを操作するために、そのインタプリタの場所を指定するか、 activate
それ。
仮想環境内でインタープリターを使用してインストールするすべてのアプリケーションは、その場所内に配置されます。
pip を使用してそれらのリストを作成すると、フォルダー内のものだけがファイルにコンパイルされます。
覚えておいてください:ある環境での作業が終了したら、別の環境に切り替える前に、またはグローバルにインストールされた環境で作業する前に、次のことを確認する必要があります。
deactivate
それ。
仮想環境(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