pip と仮想環境を使ってパッケージをインストールする

このガイドでは、 pip と仮想環境マネージャ、つまり Python 3 での venv か Python 2 での virtualenv を使ってパッケージをインストールする方法について議論します。これらは、Python のパッケージを管理する最も低レベルのツールで、高レベルのツールがあなたのニーズに合わない時に推奨される方法です。

注釈

この文書では パッケージ という用語を 配布パッケージ の意味で使いますが、これは Python ソースコードでモジュールをインポートするという意味で使われる パッケージインポート とは異なります。

pip をインストールする

pip は Python の参照モデルとなるパッケージマネージャです。それはパッケージのインストールや更新に用いられます。常に pip の最新版をインストールしておくように気をつけましょう。

Debian や他のほとんどのディストロは python-pip パッケージを含んでいます; Linuxのディストロが準備したバージョンの pip を使いたい場合は、 Linux パッケージマネージャを使って pip/setuptools/wheel をインストールする を見てください。

pip の最新版を使っていることを担保するために、自分自身でインストールすることもできます。ユーザ側で pip をインストールするためにシステム側で準備した pip をブートストラップとして使うことが推奨されています。

python3 -m pip install --user --upgrade pip

python3 -m pip --version

それから、ユーザサイトには最新版の pip がインストールされているべきです。

pip 21.1.3 from $HOME/.local/lib/python3.9/site-packages (python 3.9)

Windows 用の Python インストーラは pip を含んでいます。次のようにすると pip が最新版であることを確実にすることができます:

py -m pip install --upgrade pip

py -m pip --version

その後、pip が最新版になっているはずです:

pip 21.1.3 from c:\python39\lib\site-packages (Python 3.9.4)

virtualenv をインストールする

注釈

Python 3.3 またはそれ以降のものを使っているなら、 venv モジュールの方が仮想環境を作成・管理するのに好ましいです。 venv は Python の標準ライブラリに含まれていて、追加で何かをインストールしなければならないということがありません。venv を使っているのであれば、この節を飛ばして構いません。

virtualenv は、異なるプロジェクトで使う Python パッケージを管理するために使われていました。Python パッケージを大域的にインストールするとシステムツールや他のプロジェクトを壊してしまいかねないのですが、 virtualenv を用いることでこれを避けることができます。virtualenv は pip でインストールできます。

python3 -m pip install --user virtualenv
py -m pip install --user virtualenv

仮想環境を作成する

venv (Python 3 用) や virtualenv (Python 2 用) を使うと、異なるプロジェクトにそれぞれ別のパッケージをインストールして管理できます。これらのツールによって、基本的に、「仮想的に」分離された Python をインストールして、その仮想環境の中に各種のパッケージをインストールすることができます。別のプロジェクトに移る時には単純に新しい仮想環境を作成すればよく、他の環境にインストールされているパッケージを壊してしまわないかと心配する必要はありません。Python のアプリケーションを開発している間は、常に仮想環境を用いることが推奨されています。

仮想環境を作成するには、あなたのプロジェクトのディレクトリへ行って venv コマンドを走らせてください。Python 2 を使っているなら、下のコマンドの venv の代わりに virtualenv を使ってください。

python3 -m venv env
py -m venv env

二つ目の引数は、仮想環境を作成するべき場所の指定です。一般的には、プロジェクトのルートディレクトリに env という名前で作成します。

venv は仮想的な Python を env ディレクトリの中にインストールするでしょう。

注釈

仮想環境のディレクトリは、 .gitignore やその類似物を使ってバージョン管理システムから除外しておくべきです。

仮想環境を活性化する

仮想環境に (依存先の) パッケージをインストールして使用できるようにするには、まず 仮想環境 を活性化しなければなりません。仮想環境を活性化すると、その仮想環境に特有の pythonpip の実行ファイルがシェルの PATH 変数に追加されます。

source env/bin/activate
.\env\Scripts\activate

仮想環境内に入ったことを確認するには、どの Python インタープリタを使っているかを確かめればよいでしょう:

which python
where python

env ディレクトリの中のものを使っているはずです。

.../env/bin/python
...\env\Scripts\python.exe

仮想環境の中で作業する限り、pip はパッケージをその仮想環境内にインストールし、Python アプリケーションはそのパッケージをインポートして使用することができます。

仮想環境から離脱する

プロジェクトを切り替えるなどで仮想環境から離脱したい時は、このようにしてください:

deactivate

もう一度仮想環境に入りたい場合は、仮想環境の活性化に関する上述のやり方に従うだけです。仮想環境を再作成する必要はありません。

パッケージのインストール

これであなたは仮想環境内に居て、パッケージをインストールすることができるようになりました。 Python パッケージインデックス (PyPI) から Requests ライブラリをインストールしましょう:

python3 -m pip install requests
py -m pip install requests

pip が requests とその依存先パッケージをすべてダウンロードしてインストールするはずです:

Collecting requests
  Using cached requests-2.18.4-py2.py3-none-any.whl
Collecting chardet<3.1.0,>=3.0.2 (from requests)
  Using cached chardet-3.0.4-py2.py3-none-any.whl
Collecting urllib3<1.23,>=1.21.1 (from requests)
  Using cached urllib3-1.22-py2.py3-none-any.whl
Collecting certifi>=2017.4.17 (from requests)
  Using cached certifi-2017.7.27.1-py2.py3-none-any.whl
Collecting idna<2.7,>=2.5 (from requests)
  Using cached idna-2.6-py2.py3-none-any.whl
Installing collected packages: chardet, urllib3, certifi, idna, requests
Successfully installed certifi-2017.7.27.1 chardet-3.0.4 idna-2.6 requests-2.18.4 urllib3-1.22

特定のバージョンをインストールする

バージョン指定子 を使えば、 pip でパッケージのバージョンを指定してインストールすることができます。例えば、 requests の特定のバージョンをインストールするなら:

python3 -m pip install requests==2.18.4
py -m pip install requests==2.18.4

requests の最新の 2.x リリースをインストールするには:

python3 -m pip install requests>=2.0.0,<3.0.0
py -m pip install requests>=2.0.0,<3.0.0

--pre フラグを使ってパッケージのリリース前のバージョンをインストールするには:

python3 -m pip install --pre requests
py -m pip install --pre requests

パッケージの extra 部分をインストールする

必須ではない extra 部分を持つものがパッケージの中にはあります。extra の名前を角括弧([, ])の中に書くことで pip にインストールするように指示することができます。

python3 -m pip install requests[security]
py -m pip install requests[security]

ソースコードからインストールする

pip はソースコードから直接にパッケージをインストールすることができます。例えば:

cd google-auth
python3 -m pip install .
cd google-auth
py -m pip install .

さらに、 pip は 開発モード でソースコードからパッケージをインストールすることができます。つまり、ソースコードを修正すると、再インストールしなくても、すぐにインストール済みのパッケージに反映されます。

python3 -m pip install --editable .
py -m pip install --editable .

バージョン管理システムからインストールする

pip は、バージョン管理システムから直接に、パッケージをインストールすることができます。例えば、git リポジトリから直接にインストールするには:

google-auth @ git+https://github.com/GoogleCloudPlatform/google-auth-library-python.git

サポートされているバージョン管理システムや文法について、詳しくは VCS サポート の pip の説明文書を見てください。

ローカルアーカイブからインストールする

もし 配布パッケージ のアーカイブ ( zip や wheel や tar ファイル) をローカルに持っているなら、 pip でそこから直接にインストールすることができます:

python3 -m pip install requests-2.18.4.tar.gz
py -m pip install requests-2.18.4.tar.gz

複数のパッケージのアーカイブを置いたディレクトリを pip に探索させるようにして、Python パッケージインデックス を全く利用しないということも可能です:

python3 -m pip install --no-index --find-links=/local/dir/ requests
py -m pip install --no-index --find-links=/local/dir/ requests

この機能は、限定的なインターネット接続しか得られないシステムでパッケージをインストールする際や、配布物パッケージの出自を厳密に管理したい時には便利です。

他のパッケージインデックスを使う

Python パッケージインデックス 以外のところからパッケージをダウンロードしたいのであれば、 --index-url オプションでできます:

python3 -m pip install --index-url http://index.example.com/simple/ SomeProject
py -m pip install --index-url http://index.example.com/simple/ SomeProject

Python パッケージインデックス と別のインデックスを同時に使いたいのであれば、 --extra-index-url オプションでできます:

python3 -m pip install --extra-index-url http://index.example.com/simple/ SomeProject
py -m pip install --extra-index-url http://index.example.com/simple/ SomeProject

パッケージを更新する

pip に --upgrade オプションを与えるとパッケージの入れ替え更新ができます。例えば、 requests とその依存先パッケージの最新版をインストールしたいのなら:

python3 -m pip install --upgrade requests
py -m pip install --upgrade requests

requirements ファイルを使う

パッケージをひとつひとつインストールする代わりに、pip では Requirements ファイル にすべての依存先パッケージを列挙しておくことができます。例えば、 requirements.txt を下記を含むように作成しておいて:

requests==2.18.4
google-auth==1.1.0

このファイルに書いてあるパッケージを全てインストールするようにと、 -r オプションを与えることで pip に指示します:

python3 -m pip install -r requirements.txt
py -m pip install -r requirements.txt

依存関係を凍結する

Pip では、 freeze コマンドを使うことで、インストール済みの全パッケージのバージョン付きのリストを取り出すことができます:

python3 -m pip freeze
py -m pip freeze

それは、次に挙げるようなパッケージ指定子のリストを出力します:

cachetools==2.0.1
certifi==2017.7.27.1
chardet==3.0.4
google-auth==1.1.1
idna==2.6
pyasn1==0.3.6
pyasn1-modules==0.1.4
requests==2.18.4
rsa==3.4.2
six==1.11.0
urllib3==1.22

これは、ある環境にインストールされているパッケージを正確にそのバージョンで再作成することができる pip:Requirements ファイル を作るのに便利です。