Pythonのパッケージ管理pipをインストール

はじめに

2016年11月、Raspberry Pi2にカメラ(picamera)を接続してPythonスクリプトを書こうとPicameraドキュメントを読んでいたら、pipツールの記述がありました。

pipとは何かと調べてみると、Pythonのライブラリを管理するパッケージ管理システムということがわかりました。これから、Pythonを勉強しようと考えていましたので、pipをインストールしました。

pipのWEBサイト

pipのWebサイトにドキュメントがあります。

Pythonパッケージ管理システム

Pythonパッケージ管理システム

 

stable(安定版)バージョンのRelease Noteによると、2016年11月25日現在の最新版は9.0.1 (2016-11-06)です。

pipは、PyPI(the Python Package Index) からパッケージをインストールできます。

Python Package Index

Python Package Index

pipのインストール

最初に、apt-getでpipをインストールします。

sudo apt-get install python-dev
sudo apt-get install python-pip

Python 2.7.9を使用していましたので、すでにインストールされているようです。

pipのバージョンを確認します。

pi@pi2note:~ $ pip --version
pip 1.5.6 from /usr/lib/python2.7/dist-packages (python 2.7)

pipのバージョンは、1.5.6でした。

次に、pipコマンドを使用してpipツールをアップグレードします。

sudo pip install --upgrade pip

インストール終了後に、もう一度バージョンを確認したら 1.5.6のままでした。一度、ターミナルを閉じて、もう一度確認しました。

pi@pi2note:~ $ pip --version
pip 9.0.1 from /usr/local/lib/python2.7/dist-packages (python 2.7)

pipのバージョンは、9.0.1になりました。

 

pipの使用方法

pipのhelpオプションで使用方法を調べました。コマンドとオプションを指定して使用します。

pi@pi2note:~ $ pip --help

Usage:
  pip <command> [options]

Commands:
  install                     Install packages.
  download                    Download packages.
  uninstall                   Uninstall packages.
  freeze                      Output installed packages in requirements format.
  list                        List installed packages.
  show                        Show information about installed packages.
  check                       Verify installed packages have compatible dependencies.
  search                      Search PyPI for packages.
  wheel                       Build wheels from your requirements.
  hash                        Compute hashes of package archives.
  completion                  A helper command used for command completion.
  help                        Show help for commands.

helpコマンド

コマンドのヘルプ情報を表示します。

helpコマンドのヘルプ情報を表示してみました。

pi@pi2note:~ $ pip help help

Usage:
pip help <command></command>

Description:
Show help for commands
・・・

pip help の後ろに調べるコマンドを指定します。
例えば、listコマンドを調べる場合は下記のようにします。

pi@pi2note:~ $ pip help list

Usage:
pip list [options]

Description:
List installed packages, including editables.

Packages are listed in a case-insensitive sorted order.

List Options:
-o, --outdated List outdated packages
-u, --uptodate List uptodate packages
・・・

list コマンド

「pip list」で、インストール済みパッケージを表示します。

pi@pi2note:~ $ pip list
DEPRECATION: The default format will switch to columns in the future. You can use --format=(legacy|columns) (or define a format=(legacy|columns) in your pip.conf under the [list] section) to disable this warning.
chardet (2.3.0)
colorama (0.3.2)
dnspython (1.12.0)
docutils (0.12)
gpiozero (1.3.1)
html5lib (0.999)
・・・

「–format指定」できるようです。

  • legacy :     旧来形式(デフォルト)
  • columns :  カラム整形形式
  • freeze :      バージョン固定形式
  • json :         JavaScript Object Notationによるオブジェクト表記形式

■ legacy

pi@pi2note:~ $ pip list --format=legacy
chardet (2.3.0)
colorama (0.3.2)
・・・

■ columns

pi@pi2note:~ $ pip list --format=columns
Package         Version
--------------- --------
chardet         2.3.0
colorama        0.3.2
・・・

■ freeze

pi@pi2note:~ $ pip list --format=freeze
chardet==2.3.0
colorama==0.3.2
・・・

■ json

pi@pi2note:~ $ pip list --format=json
[
{"version": "2.3.0", "name": "chardet"},
{"version": "0.3.2", "name": "colorama"},
・・・
]

 

オプション「 -o, –outdated」で更新可能なパッケージを表示します。
オプション「 -u, –uptodate」で最新バージョンが入っているパッケージを表示します

pi@pi2note:~ $ pip list -o --format=columns
Package         Version Latest      Type
--------------- ------- ----------- -----
colorama        0.3.2   0.3.7       wheel
dnspython       1.12.0  1.15.0      wheel
html5lib        0.999   0.999999999 wheel
Jinja2          2.7.3   2.8         wheel
ndg-httpsclient 0.3.2   0.4.2       sdist
numpy           1.8.2   1.11.2      sdist
Pillow          2.6.1   3.4.2       sdist
pyasn1          0.1.7   0.1.9       wheel
Pygments        2.0.1   2.1.3       wheel
pyOpenSSL       0.13.1  16.2.0      wheel
pyserial        2.6     3.2.1       wheel
requests        2.4.3   2.12.1      wheel
setuptools      5.5.1   28.8.0      wheel
six             1.8.0   1.10.0      wheel
Sphinx          1.2.3   1.4.9       wheel
spidev          3.0     3.2         sdist
urllib3         1.9.1   1.19.1      wheel
wheel           0.24.0  0.29.0      wheel

freeze コマンド

「pip freeze」で、インストール済みパッケージをfreeze形式で表示します。

pi@pi2note:~ $ pip freeze
alabaster==0.7.9
Babel==2.3.4
chardet==2.3.0
colorama==0.3.2
dnspython==1.12.0
docutils==0.12
gpiozero==1.3.1
・・・

「pip list –format=freeze」と表示形式は同じですが、pip、setuptools、wheelなどのパッケージ管理ツールは表示されません。

show コマンド

「pip show パッケージ名」で、インストール済みパッケージの情報を表示します。

PythonドキュメントツールであるSphinxパッケージの情報を表示してみます。

pi@pi2note:~ $ pip show Sphinx
Name: Sphinx
Version: 1.2.3
Summary: Python documentation generator
Home-page: http://sphinx-doc.org/
Author: Georg Brandl
Author-email: georg@python.org
License: BSD
Location: /usr/lib/python2.7/dist-packages
Requires: Pygments, docutils, Jinja2

search コマンド

「pip search パッケージ名」で、PyPIからパッケージを検索します。

標準ライブラリのjsonより速いsimplejsonを探してみます。

pi@pi2note:~ $ pip search simplejson
simplejson (3.10.0) - Simple, fast, extensible JSON encoder/decoder for Python

install コマンド

「pip install パッケージ名」で、パッケージをインストールします。管理者権限が必要なので、sudoを付けます。

標準ライブラリのjsonより速いsimplejsonパッケージをインストールしてみます。

pi@pi2note:~ $ sudo pip install simplejson
Collecting simplejson
・・・
Successfully installed simplejson-3.10.0

uninstall コマンド

「pip uninstall パッケージ名」で、パッケージをアンインストールします。管理者権限が必要なので、sudoを付けます。

pi@pi2note:~ $ sudo pip uninstall simplejson
Uninstalling simplejson-3.10.0:
・・・
Proceed (y/n)? y
Successfully uninstalled simplejson-3.10.0

install upgrade コマンド

「pip install パッケージ名」に、オプション「-U, –upgrade」をつけてパッケージをアップグレードします。管理者権限が必要なので、sudoを付けます。

Sphinxパッケージをアップグレードしてみます。
「pip list -o」で、更新可能なパッケージ1.4.9があることがわかります。
アップグレードすると、1.4.9になりました。

pi@pi2note:~ $ pip list -o |grep Sphinx
Sphinx (1.2.3) - Latest: 1.4.9 [wheel]

pi@pi2note:~ $ sudo pip install -U Sphinx

pi@pi2note:~ $ pip list |grep Sphinx
Sphinx (1.4.9)

install requirement コマンド

「pip install パッケージ名」に、オプション「-r, –requirement」とパッケージリスト名を指定すると、パッケージリストをまとめてインストールすることができます。インストールされているパッケージリストは、「pip freeze」コマンドをリダイレクトして作成することができます。
パッケージを別の環境にインストールする場合に使用できます。

pip freeze > freeze.txt
pip install -r freeze.txt

Picameraライブラリのインストール

Raspberry Piカメラ用のPythonライブラリ picamera をインストールします。

sudo pip install picamera
sudo pip install "picamera[array]"

アップグレードします。関連するパッケージもアップグレードしてくれました。

pi@pi2note:~ $ sudo pip install -U picamera
Requirement already up-to-date: picamera in /usr/lib/python2.7/dist-packages
pi@pi2note:~ $ sudo pip install -U "picamera[array]"
Requirement already up-to-date: picamera[array] in /usr/lib/python2.7/dist-packages
Collecting numpy (from picamera[array])
Successfully built numpy
Installing collected packages: numpy
・・・
Successfully installed numpy-1.11.2

最後に

これで、pipツールの使用方法が理解できました。

Pythonのパッケージを集めたサイト「PyPI (Python Package Index)」に、世界中で開発されている豊富なパッケージ(ライブラリ)群があり、目的に応じて使用できるのはPythonの魅力です。

今後、Pythonスクリプト派になりたいと考えています。


私は、8ビットマイクロプロセッサ時代に育った技術者なので、最初にpipという言葉を見たとき、PIP(Peripheral Interchange Program)コマンドを思い出しました。

1980年代初期に、インテル8080/ザイログZ80のマイクロプロセッサ用に開発されたCP/M-80というOSがありました。PIPコマンドは周辺装置間のデータ転送コマンドで、「PIP destination=source」でデータ転送ができました。ファイルだけではなく、スペシャルファイル(CON:、LST:、PRN:など)にも転送できました。
懐かしい思い出です。