pipの使い方 (2014/1バージョン)

以前pipの使い方という記事を書いたのですが、これは2011年の1月と、ちょうど3年前です。これから随分変わったので、ここでもう一度まとめたいと思います。

ここで述べているpipのバージョンは1.5です。お使いのpipのバージョンが古い場合はpip install -U pipとして、更新してください。

警告

大きな変更点: pip 1.5から"pre"や"b"などがバージョンに付いているパッケージはデフォルトで検索やインストールの対象からはずされました。そのため、1.5未満のバージョンのpipでインストールしたパッケージが1.5では入らない場合があります。

--preを付けることで、これらのバージョンを入れることができます。

pipとは

pipとは、Pythonにおけるパッケージ管理システムです。

pipのインストール

ちなみに

pipはcpythonの2.6, 2.7, 3.1, 3.2, 3.3, 3.4のバージョンをサポートしています。python 2.5はpip 1.3.1から使えなくなりました。

ちなみに

pip 1.5.1からsetuptoolsのインストールが要らなくなりました。get-pip.pyが自動的に入れてくれます。

  1. get-pip.pyをダウンロードします。セキュリティには十分注意してください。

  2. pythonで実行します。sudoが必要になる場合もあります。

    % python get-pip.py
    

あるいは、ディストリビューションのパッケージマネージャーを使います。

% sudo apt-get install python-pip  # debuan/ubuntu
% sudo yum install python-pip  # fedora

help

% pip help # 全体的なhelpを表示
% pip help install # installに関するhelpを表示
% pip help freeze # freezeに関するhelpを表示

pypiを検索

pipはPython Package Index(pypi)にあるパッケージを、searchコマンドで検索できます。

% pip search pycrypto
pycryptopp      - Python wrappers for a few algorithms from theCrypto++ library
pycrypto        - Cryptographic modules for Python.
    INSTALLED: 2.6.1 (latest)
pycryptopan     - A python implementation of Crypto-PAna ip anonymization algorithm

INSTALLEDと出ているように、すでにインストール済みのパッケージはその旨表示されます。

--index <url>
pypi以外を検索する場合に、ベースとなるURLを指定します。

インストールする

installを使います。

% pip install pycrypto

freezeしたパッケージを自動的にインストール

後述するfreezeを使って書き出しておいたパッケージリストを全部インストールします。書き出したパッケージリストは単なるテキストファイルなので、簡単に編集できます。依存性があるものも勝手にインストールされるので、必要な分だけ残しておけば大丈夫です。

% pip freeze > packages_requirements.txt
(必要ならばファイルを編集)
% pip install -r packages_requirements.txt
(複数指定も可能)
% pip install -r basic_requirements.txt -r packages_requirements.txt

ちなみに、pip installを叩いた時点での最新版を入れたい場合は、バージョンを抜けば良いです。

MarkupSafe
pycrypto

なお、-–no-depsを付けることで、書きだされたパッケージリストと完全に同じパッケージがインストールされます。これにより、依存性によって想定していないパッケージがインストールされることを防げます。

proxyを設定する

% pip install pycrypto --proxy=http://user@proxy.example.jp:8080

ちなみに

2014/07追記: "http"が必要になりました。

ユーザーディレクトリにインストールする

rootがない環境などでは、ユーザディレクトリにインストールすることしかできません。そのためには、--userをつけます。

% pip install pycrypto --user

このように --user をつけてインストールすると、 ~/.local/ 以下に置かれます。~/.local/bin などにPATHを通しておかないとあれーってことになりますので、ご注意を。

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

バージョンを指定してインストールすこともできます。

% pip install Flask==0.10.1

freezeで書き出したパッケージファイルはこの形式のため、freezeの名のとおり、書き出されたときのバージョンがインストールされることに注意してください。

バージョンの指定方法はわりと柔軟でこんなこともできます。

% pip install 'Markdown<2.0'

この場合、すでに2.0以上のバージョンがインストールされている場合は、それをuninstallして<2.0を満たすバージョンをインストールしてくれます。

また、

% pip install 'Markdown>2.0,<2.0.3'

とかもできます。

手元のリポジトリをインストール

手元にリポジトリから直接インストールすることができます。

% pip install -e .

Subversion/git/mercurial/bazaarから直接インストールする

リモートのリポジトリから直接インストールすることもできます。

% pip install -e git+https://git.repo/some_pkg.git#egg=SomePackage  # git
% pip install -e hg+https://hg.repo/some_pkg#egg=SomePackage        # mercurial
% pip install -e svn+svn://svn.repo/some_pkg/trunk/#egg=SomePackage # svn
% pip install -e git+https://git.repo/some_pkg.git@feature#egg=SomePackage  # 'feature' ブランチから
# リポジトリのサブディレクトリからインストール
% pip install -e git+https://git.repo/some_repo.git@egg=subdir&subdirectory=subdir_path

アーカイブファイルから直接インストール

tar.gzやzipファイルから直接インストールできます。

% pip install ./downloads/SomePackage-1.0.4.tar.gz
% pip install http://my.package.repo/SomePackage-1.0.4.zip

インストールせずに試してみる

なにがダウンロードされるのか確かめたい場合があります。その場合は-dオプションを使います。

% pip install pycrypto -d /tmp/

これにより、/tmp以下にpycryptoのtar.gzがダウンロードされます。

もう一度インストールしたい

-I (--ignore-installed)を使います。

% pip install pycrypto -I

アップグレードしたい

一度インストールしたパッケージをアップグレードする場合には、-U (--upgrade)を使います。

% pip install pycrypto -U

pypi以外からインストールする

ローカルのミラー環境などpypi以外からインストールしたい場合があります。

pypiから検索はせず、指定した場所から検索とインストールを行います。

% pip install --index-url http://my.package.repo/simple/ SomePackage

pypiに加えて、検索とインストールする場所を指定します。

% pip install --extra-index-url http://my.package.repo/simple

ローカルの、ファイルがフラットに置かれているディレクトリからインストールします。--no-indexを付けることで、indexを検索しません。

% pip install --no-index --find-links=file:///local/dir/ SomePackage
% pip install --no-index --find-links=/local/dir/ SomePackage
% pip install --no-index --find-links=relative/dir/ SomePackage

wheelからインストールする

後述のwheelコマンドで作成したwheelをインストールできます。

% pip install --use-wheel --no-index --find-links=/tmp/wheelhouse pycrypto

Mirrorを使いたい

mirrorはなくなりました。 詳しくはPEP 449を見てください

現在インストールされているパッケージを表示

listを使います。

% pip list
ansible (1.4.2)
argparse (1.2.1)
ecdsa (0.10)
Flask (0.10.1)
httplib2 (0.8)

よく使うオプションは以下のとおりです。

-o
更新可能なパッケージを表示
-u
最新バージョンが入っているパッケージを表示
-e
install -e で入れたパッケージを表示
-l
virtualenv環境の場合、システムにインストールされているパッケージは表示しない
--pre
ベータバージョンも表示

あとで入れるために、現在インストールされているパッケージを表示

freezeを使うと、pip install -rでまとめてインストールできる形式で、現在インストールされているパッケージを書き出します。

% pip freeze > requirementx.txt

uninstallする

uninstallを使います。

% pip uninstall pycrypto

ちなみに、 -y をつけると、すべての問いに yes と答えます。たまに有用ですが、気をつけて使ってください。

requirementsファイルを指定したい

-rを使ってfreezeで書きだしたファイルのみをまとめて削除します。

% pip uninstall -r requirements.txt

インストールしたパッケージの詳細を知りたい

showを使います。

% pip show pycrypto
-f
パッケージに含まれているすべてのファイルを表示します。

wheelを作成する

wheelを作成します。 wheelとはeggの代わりとなるもので、ビルド済みのパッケージを保存するための形式であり、wheelを利用することで毎回コンパイルする手間が省けます。詳しくはWheelドキュメントを見てください。

なお、wheelコマンドを実行するにはwheelパッケージが必要です。事前にpip install wheelとし、インストールしておいてください。

% pip wheel pycrypto  # パッケージ名指定
% pip wheel -r requirements.txt   # ファイル指定
% pip wheel hg+https://hg.repo/some_pkg  # vcs指定
% pip wheel .  # ローカル指定
% pip wheel hoge.tar.gz  # アーカイブファイル指定

デフォルトではwheelhouseというディレクトリ以下にwheelファイルが作成されます。依存関係をたどっていくので、複数のwheelファイルが作成される場合があります。

設定

pipは以下のファイルを設定ファイルとして使います。

  • UNIX系とMax OS Xは $HOME/.pip/pip.conf
  • Windowsは %HOME%pippip.ini

ini形式での記述です。

[global]
timeout = 60
index-url = http://download.zope.org/ppix

あるいは、installコマンドを指定したいのであれば

[install]
ignore-installed = true
no-dependencies = yes
find-links =
 http://mirror1.example.com
 http://mirror2.example.com

と書けます。もちろんglobalとinstallを両方同時に書くこともできます。

環境変数

環境変数も使えます。

% export PIP_FIND_LINKS="http://mirror1.example.com http://mirror2.example.com"

PIP_FIND_LINKSやPIP_DEFAULT_TIMEOUTなどのように、オプション名を大文字にしたものが使えます。

shell補完

shell補完のためのスクリプトを書き出してくれます。

% pip completion --zsh >> ~/.zprofile

もしもまだbashを使っている人がいるのならば、以下のオプションも使えます

% pip completion --bash >> ~/.profile

あるいは、書き出さなくても直接evalでも構いません。

% eval "`pip completion --zsh`"