概要
扱っているモジュールには3つの一般的なカテゴリがあります。
- OSパッケージシステムを使用してすべてのユーザーにインストールされるサポートプログラム。(これには、Pythonでプログラミングする人々が使用するツールやライブラリも含まれる場合があります。以下を参照してください。)これらの場合は、OSパッケージを使用し、
pip
必要に応じてシステムディレクトリにインストールします。
- 特定のユーザーが自分の使用のためだけに、またスクリプト言語としてのPythonの「日常的な」使用の特定の側面のために、特定のユーザーによってインストールされるサポートプログラム。これらのために、彼女は
pip --user
おそらくpyenvまたはpythonzと同様のツールと戦術を使用します。
- 特定のアプリケーションの開発と使用をサポートするもの。これらには、
virtualenv
(または同様のツール)を使用します。
ここの各レベルは、前のレベルからサポートを受けている場合もあります。たとえば、(2)のユーザーは、OSパッケージを介してインストールされたPythonインタープリターに依存している可能性があります。
これについてもう少し詳しく説明します。
システムプログラムとパッケージ
「実行する」だけのPythonで書かれたプログラムは簡単です。OSインストールツールを使用するだけで、必要なものをすべて取り込むことができます。これは、非Pythonプログラムと違いはありません。これは、あなたのマシンのユーザーが依存し始めるかもしれないPythonツール/ライブラリ(Pythonインタプリタ自体など!)をもたらす可能性があります。依存関係を理解し、理想的には、それらの依存関係を提供しないホストでそれを処理する代替手段を知っている限り、これは問題ではありません。
そのような依存関係の一般的で単純な例は、~/.local/bin/
で始まる私の個人的なスクリプトの一部です#!/usr/bin/env python
。これらは(Python 2で実行される限り)RH / CentOS 7およびほとんど(すべてではない)Ubuntuインストールで正常に動作します。基本的なDebianのインストール下またはWindows上ではありません。私の個人的な環境がOSパッケージに依存するという点で非常に嫌いなのですが(私は多くの異なるOSで働いています)、このようなことはかなり受け入れられると思います。システムPythonを持たず、システムPythonを取得できないまれなホストでのバックアップ計画は、以下に説明するようにユーザーシステムを使用することです。
システムpythonインタープリターを使用している人は通常、システムに依存していますpip3
。これは、通常、システムの依存関係について線を引く場所です。virtualenv
前方からすべて私は自分自身に対処します。(例えば、私の標準アクティブスクリプトが何に依存しているpip3
か、pip
パスにあるが、それ自身のコピーをダウンロードvirtualenv
それは作成の仮想環境をブートストラップします。
とはいえ、開発環境をもっと利用可能にすることが完全に合理的である状況はおそらくあるでしょう。Pythonのインターフェイスを複雑なパッケージ(DBMSなど)に入れて、そのシステムバージョンを使用したい場合があります。また、システムと対話するために使用する特定のPythonライブラリコードをシステムに選択させることをお勧めします。または、Pythonクラスの基本的な開発環境を備えた多くのホストを展開し、標準システムパッケージを使用して自動化するのが最も簡単であることがわかります。
ユーザーの「日々」のプログラムとパッケージ
ユーザーは、最初に仮想環境(例:virtualenvwrapper)を作成したい、またはコマンドラインからよく使用するものであるため、仮想環境にうまく適合しないPythonライブラリまたはプログラムを持っている可能性がありますPython以外の仕事をしています。これらのシステムバージョンをインストールする機能を持っている場合でも、(たとえば、ツールとその依存関係の最新バージョンを使用したいため)独自のインストールをより快適に感じるかもしれません。
一般的に、これpip --user
は人々がこれに使用するものですが、Pythonインタープリター自体などの特定の依存関係は、それよりも少し多く必要です。pyenvとpythonzは~/.local/bin
、デフォルトのインタープリターとしてインストールされるかどうかにかかわらず、個人的なインタープリターを構築するのに役立ちます。もちろん、devライブラリが利用可能な場合は、ソースからいつでも「手作業」でビルドできます。
ここにインストールされているものの最低限のセットを維持しようとしています:virtualenvwrapper(私は絶えず使用しているため)と、おそらく最新バージョンのpip。私は、多くのホストで使用される個人用スクリプトについて、標準ライブラリ外またはPython 3の依存関係を回避しようとしています。(これらの個人的なスクリプトの多くをPythonに移行するにつれて、どれだけ長く耐えられるかがわかります。)
個別のアプリケーション開発環境とランタイム環境
これは通常のvirtualenvのことです。開発では、ほとんどの場合、virtualenvを使用してシステムの依存関係を使用しないようにします。多くの場合、複数のPythonバージョンに対するテストには複数の環境を使用します。
これらの仮想環境は、ユーザー環境の汚染を避けたい多くの依存関係があるアプリケーションにも適しています。たとえば、私は通常Jupyterノートブックなどを実行するためのvirtualenvをセットアップします。