追記
2016/11/08 訳されていなかった文章を訳しました。(pip downloadの追加オプションについての項)
pip 9.0.0
pyenvで新しい仮想環境作ってpip使った時に教えてくれました。
興味あったしどういう変更があったか調べました。
2系とのお別れの日が近づいている
[Distutils] Released: pip v9.0.0
どうやら9.x系がPython2.6に対応する最後のバージョンになるらしいです。
- The 9.x series will be the last pip versions to support Python 2.6.
更新点一覧
Release Notes — pip 9.0.1 documentation
このバージョンより前には後方互換性がなくなります。
自動検出をしないので、egg使いたい時は#egg=ってちゃんと書かないといけなくなりました。pip install --eggが非推奨なものになった上に、そのうちegg自体の機能が削除されるようになるらしいです。
eggはpipの他の機能のメリットをぶち壊すようなデメリットをたくさん持ってるから、だそうです。pip checkという、インストールされているパッケージの依存関係をチェックしてくれるコマンドが標準でインストールされるようになりました(PR #3750)。pipコマンドの操作中で既にファイル/ディレクトリが存在する際、ユーザーの操作を中止させることができるオプションが追加されました。
Appveyor CIが追加されました。(?)
インストールするパッケージが既に存在しているパッケージの場合、既存のパッケージをアンインストールするようになりました(#1548)。
pip showのデフォルトの表示がすっきりしました。–verboseオプションをつけるといつもどおりになります。(PR #3858)
$ pip show flask Name: Flask Version: 0.11.1 Summary: A microframework based on Werkzeug, Jinja2 and good intentions Home-page: http://github.com/pallets/flask/ Author: Armin Ronacher Author-email: armin.ronacher@active-4.com License: BSD Location: ふぁいるtoぱす Requires: click, Werkzeug, Jinja2, itsdangerous
pip listのフォーマットに新しいフォーマットcolumnsが追加されました(#3651)。
$ pip list --format columns Package Version ------------- ------- click 6.6 Flask 0.11.1 itsdangerous 0.24 Jinja2 2.8 MarkupSafe 0.23 mecab-python3 0.7 pip 9.0.0 requests 2.11.1 setuptools 18.2 Werkzeug 0.11.11
- また、
pip listのデフォルトのフォーマットであるlegacyが非推奨になり、そのうちデフォルトのフォーマットがcolumnsに切り替わるそうです。
$ pip list DEPRECATION: The default format will switch to columns in the future. You can use --format=legacy (or define a list_format in your pip.conf) to disable this warning.
pip listに--not-requiredという、依存関係にないもののみを表示するようなオプションが追加されました。
$ pip list --format columns Package Version ------------- ------- click 6.6 Flask 0.11.1 itsdangerous 0.24 Jinja2 2.8 MarkupSafe 0.23 mecab-python3 0.7 pip 9.0.0 requests 2.11.1 setuptools 18.2 Werkzeug 0.11.11 $ pip list --format columns --not-required Package Version ------------- ------- Flask 0.11.1 mecab-python3 0.7 pip 9.0.0 requests 2.11.1 setuptools 18.2
ビルド時にシンボリックリンクとかの相対的なファイルパスではなく、
os.path.realpathを使った絶対的なファイルパスを使用するようになりました(PR #3701)。(これ訳自信ない)pip freezeの回帰修正: 1つより多い数のgitのremoteがある場合、リモートの名前がoriginのものを優先するようになりました(PR #3708, #3616)。pip freezeした時、おかしい(invalidな)requirementのものがあるときにクラッシュする問題が修正されました(PR #3704, #3681)。
複数のファイルに
pip freezeした結果を分割して書き出せるようになりました(PR #3703)。(ここ訳自信ない)pep-503
data-requires-pythonを実装しました。pip wheelが
editable packagesとしても動くようになりました。このおかげでeditable requirementsの場合にpip freezeにwheelの実行結果が使えるようになりました(PR #3695, #3291)。pip downloadに--platform、--python-version、--implementation、--abiが追加されました。
これらのオプションで、utilitiesとadvanced usersは今pipが動いている環境用ではないディストリビューションを収集することができるようになります(PR #3760)。(訳自信ない)venv/bin/pythonがシンボリックリンクを持っていてもvirtual envの環境のスキャンをしなくなりました。fish-shellの補間に対応しました。
Windows上のPython2にて、ユーザー名もしくはホスト名がnon-ASCIIな文字を含んでいた時の問題を修正しました(#3463, PR #3970, PR #4000)。
git fetch --tagsでtagをfetchするようになりました。ブランチにないコミットまたはタグがrequirementのurlとして指定されたとき用(PR #3791)。(これまじで自信ない)pip showでパッケージ名を正規化するようになりました(#3976)。Requires-Pythonが実行しているPythonのバージョンと食い違っている場合または
--ignore-requires-pythonオプションが付けられていない場合Raiseするようになりました(PR #3846)。へんなケース(corner case)でアップグレードを実行した時、正確なインストールされたバージョンを報告するようになりました(#2382)。
pip searchにおいて、--indexに-iという簡略記法を追加しました。SVNのurlにおいて、認証部分(ユーザーネーム、パスワードの部分)をカットするようになりました(PR #3697, #3209)。
--targetオプションをつけることでplatlib内にもインストールするようになりました(PR #3694, #3682)。pip freezeで作成されたrequirements.txtにコメントをつける機能を復元しました(#3680)。(ここ訳自信ない)
(requirements.txtにコメントできないようにしたものを出来るようになおしたのかもしれないです。)--default-vcsオプションが非推奨になりました(#4052)。
基本的に心配な和訳能力なので、違うような部分がありましたらぜひとも教えていただきたいです。
所感
pipっていつも使ってるものだから、むしろ更新にあまり気を取られなかったけど、今回みたいに更新点とかしっかり把握したほうがより親身になるんだろうなって思いました。
pip listにフォーマットがあること知らなかったし、pip downloadとpip showにおいては存在すら知らなかったし、結構勉強になりました。
pip showの便利感がすごい。
あと多分pip list --format=freeze --not-requiredするとrequirements.txtの記述もスッキリするんじゃないかって思いました。それが良いかどうかは置いときます。