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が自動的に入れてくれます。
get-pip.py をダウンロードします。セキュリティには十分注意してください。
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