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のインストール

Tip

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

Tip

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

Tip

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`"

Comments

comments powered by Disqus