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
やその類似物を使ってバージョン管理システムから除外しておくべきです。
仮想環境を活性化する¶
仮想環境に (依存先の) パッケージをインストールして使用できるようにするには、まず 仮想環境 を活性化しなければなりません。仮想環境を活性化すると、その仮想環境に特有の python
と pip
の実行ファイルがシェルの 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 ファイル を作るのに便利です。