pipの9.0.0でた eggが非推奨になりました 他いろいろ

追記

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)。

  • .netrcファイルから証明書(credential)を読み込むようになりました(PR #3715, #3569)。

  • 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という簡略記法を追加しました。

  • 必要に応じてCの依存関係を読み込まないようになりました(#1840, #2930, #3024)。

  • SVNのurlにおいて、認証部分(ユーザーネーム、パスワードの部分)をカットするようになりました(PR #3697, #3209)。

  • --targetオプションをつけることでplatlib内にもインストールするようになりました(PR #3694, #3682)。

  • pip freezeで作成されたrequirements.txtにコメントをつける機能を復元しました(#3680)。(ここ訳自信ない)
    (requirements.txtにコメントできないようにしたものを出来るようになおしたのかもしれないです。)

  • --default-vcsオプションが非推奨になりました(#4052)。

基本的に心配な和訳能力なので、違うような部分がありましたらぜひとも教えていただきたいです。

所感

pipっていつも使ってるものだから、むしろ更新にあまり気を取られなかったけど、今回みたいに更新点とかしっかり把握したほうがより親身になるんだろうなって思いました。

pip listにフォーマットがあること知らなかったし、pip downloadpip showにおいては存在すら知らなかったし、結構勉強になりました。
pip showの便利感がすごい。

あと多分pip list --format=freeze --not-requiredするとrequirements.txtの記述もスッキリするんじゃないかって思いました。それが良いかどうかは置いときます。