Pythonにはパッケージ/モジュール管理システムがありますか?


145

Pythonにはパッケージ/モジュール管理システムがありgem install packagenameますか?Rubyにルビージェムができるのと同じように?

のPythonモジュールのインストール、私だけへの参照を参照してくださいpython setup.py install、それは最初のパッケージを見つけるためにあなたを必要とします。


3
PythonのパッケージインデックスPyPIにパッケージのインストール方法のより明確な指示があるはずだと思われる場合は、投票して、bitbucket.org / pypa / pypi / issue / 149 /…で
大佐パニック

当時は最新でしたが、この質問のリンクは、従来のdistutilsのドキュメントへのリンクです。これらのドキュメントは、エンドユーザードキュメントとしての使用には適していないことを明確にする必要があることをカバーするために、bugs.python.org / issue26014を提出しました(ツールの実装者の利益のためだけに残されています)。
ncoghlan 2016年

回答:


213

最近の進歩

2014年3月:朗報です。Python 3.4にはPipが付属しています。Pipは長い間、Pythonの事実上の標準パッケージマネージャーでした。次のようなパッケージをインストールできます

pip install httpie

ワヘイ!これは、どのPythonリリースでも最高の機能です。コミュニティの豊富なライブラリを誰でもアクセスできるようにします。初心者は、セットアップが非常に難しいため、コミュニティライブラリの使用から除外されなくなりました。

ただし、Pythonのパッケージ化の経験には、多くの傑出したフラストレーションが残っています。累積的に、それらは初心者にとってPythonを非常に歓迎しません。また、怠慢の長い歴史(つまり、Python 2.0からPython 3.3まで14年間パッケージマネージャーに同梱されていなかった)はコミュニティに損害を与えました。以下で両方について説明します。

顕著な欲求不満

経験豊富なユーザーはこれらの不満を回避することができますが、Pythonを初めて使用する人にとっては大きな障害となることを理解することが重要です。実際、難しさと一般的なユーザーの不親しさは、それらの多くを阻止する可能性があります。

PyPIのWebサイトは逆に役立ちます

パッケージマネージャーを使用するすべての言語には、コミュニティがパッケージをダウンロードして公開するための公式(または準公式)リポジトリがあります。Pythonには、Pythonパッケージインデックス、PyPIがあります。 https://pypi.python.org/pypi

RubyGemsとNpm(Nodeパッケージマネージャー)のページと比較してみましょう。

  1. パッケージのhttps://rubygems.org/gems/rails RubyGemsページrails
  2. パッケージのhttps://www.npmjs.org/package/express Npmページexpress
  3. パッケージのhttps://pypi.python.org/pypi/simplejson/ PyPIページsimplejson

RubyGemsとNpmのページはどちらも、パッケージの1行の説明で始まり、次に、パッケージのインストール方法をわかりやすく説明しています。

その間、単純にPyPIを閲覧する不幸なPythonユーザーにとっては悲惨です。でhttps://pypi.python.org/pypi/simplejson/、彼らはそのような有用な指示を見つけることでしょう。ただし、大きな緑色の「ダウンロード」リンクがあります。それに従うことは不合理ではありません。あは、クリック!彼らのブラウザは.tar.gzファイルをダウンロードします。多くのWindowsユーザーはそれを開くことさえできませんが、忍耐強い場合、最終的にはそれを抽出し、実行してsetup.py、最終的にはGoogleの助けを借りることができますsetup.py install。一部はあきらめて、車輪を再発明します。

もちろん、これはすべて間違っています。最も簡単なパッケージをインストールする方法はピップコマンドです。しかし、PyPIはPipについてさえ言及していませんでした。代わりに、それは彼らを古くて退屈な道に導きました。

エラー:vcvarsall.batが見つかりません

NumpyはPythonで最も人気のあるライブラリの1つです。Pipでインストールしようとすると、次のような不可解なエラーメッセージが表示されます。

エラー:vcvarsall.batが見つかりません

スタックオーバーフローで最もよくある質問の1つである修正しようとしています:「エラー:vcvarsall.batが見つかりません

成功する人はほとんどいない。

比較のために、同じ状況で、Rubyはこのメッセージを出力します。これは、何が起こっているのか、そしてそれを修正する方法を説明しています。

ビルドツールを含めるようにPATHを更新するか、http: //rubyinstaller.org/downloadsからDevKitをダウンロードして、http://github.com/oneclick/rubyinstaller/wiki/Development-Kitの指示に従ってください

パッケージの公開は難しい

RubyとNodejsには、フル機能のパッケージマネージャーであるGem(2007年以降)とNpm(2011年以降)が同梱されており、GitHubを中心とした共有コミュニティを育んでいます。Npmを使用すると、パッケージをインストールするのと同じくらい簡単に公開できます。すでに64kのパッケージがあります。RubyGemsは72kパッケージをリストしています。由緒あるPythonパッケージインデックスは41kのみをリストします。

歴史

バッテリーを含む」というモットーに直面して、Pythonはパッケージマネージャーなしで2014年まで出荷されました。

ピップまで、事実上の標準はコマンド easy_installでした。それはひどく不十分でした。パッケージをアンインストールするコマンドはありませんでした。

ピップは大幅な改善でした。RubyのGemのほとんどの機能を備えていました。残念ながら、Pipは(最近まで)皮肉にもインストールが困難でした。実際、問題はStack OverflowでPythonの一番の質問のままです:「Windowsにpipをインストールするにはどうすればよいですか?


3
興味のある方のために、PEP 439はPIPインストールプロセスを合理化する方法を提案していますが、このPEPは現在検討されているより幅広い戦略の一部にすぎないと思います。また、説明を参照してくださいここに
Cartroo 2013

3
@Cartrooそれは素晴らしいニュースです!Pythonはパッケージマネージャーに値します。開発者がそれを実現できることを願っています。
大佐パニック

絶対に、長い間遅れました。少なくともPython 3.4になることを期待しています。残念ながら、それが最終的に2.xに移植されることになるかどうかは非常に疑問ですが、少なくともトンネルの終わりには光があります。それが近づいてくるドラゴンではないことを願いましょう... (^_^)
Cartroo

6
Pythonの防御において、RubyやNodeなどの新しい言語は幸運なことに、以前の言語の誤りを観察して回避することができました。そうは言っても、Pythonでのパッケージ管理がもっと愛されて気にかけられることを本当に望んでいるので、@ Cartrooによって指摘されたPEP 439を見てうれしいです。
Dennis

Rubyのパッケージ管理は私の(エンドユーザー)の観点からgem install Xすれば素晴らしいことだと思います。すべてのプラットフォームで動作するようです。では、WindowsでCコードのコンパイルを必要とする宝石の場合、どうやってこれを管理したのでしょうか
bsa 2013

64

Python Package Index(PyPI)は標準のようです:

  • パッケージをインストールするには: pip install MyProject
  • パッケージを更新するにpip install --upgrade MyProject
  • パッケージのバージョン修正するにはpip install MyProject==1.0

次のようにパッケージマネージャーをインストールできます。

curl -O http://python-distribute.org/distribute_setup.py
python distribute_setup.py
easy_install pip

参照:


3
これが現代の答えです。
Gringo Suave 2013年

6
私はインターネットを20分間検索しましたが、この答えはどこにもありませんでした。どうもありがとうございます。また、ドキュメントがこのように悪い場合は、Pythonの使用について深刻な疑いがあります...これはPythonのメインページにあるか、Googleなどからアクセスできるはずです
Chris J

63

そして、コントラストを与えるために、pipもあります。


2
ありがとう!pythonモジュールのインストールのドキュメントページにpipが記載されていないのはなぜですか?
tommy chheng

pipはeggをサポートしておらず、ソースパッケージのみをインストールすることに注意してください。一般的に言って、pipは多くのことをeasy_installよりもはるかに優れていますが、easy_installはほとんどのUNIXでデフォルトでインストールされているようですが、pipはそうではありません。
ジェフリーハリス

8
@トミー右!Python開発者がユーザーエクスペリエンスを重視する場合は、Pythonをパッケージマネージャー(pipなど)とともに出荷します。RubyにはGem、NodejsにはNpmが付属しています。stackoverflow.com/a/13445719/284795
大佐パニック

21

RubyとPerlの開発者であり、Pythonの学習者である私は、easy_installやpipがRubyGemsやCPANに相当することを知りませんでした。

開発者がモジュールを更新する間、開発システムで最新バージョンのモジュールを実行し続け、本番システムを設定されたバージョンでフリーズする傾向があります。RubyGemsとCPANはどちらも、利用可能なものをリストして簡単にモジュールを見つけてから、必要に応じてそれらを個別に、または一括でインストールおよび更新します。

easy_installとpipは、モジュールを簡単にインストールできるようにします。ブラウザ検索で見つけたモジュールや、他の方法でモジュールについて学習したものですが、何が利用できるかはわかりません。更新するモジュールに明示的に名前を付けることはできますが、アプリは何が更新されたかを知らせず、必要に応じてすべてを一括で更新することもありません。

したがって、pipとeasy_installには基本的な機能がありますが、CPANやRubyGemsと同じように使いやすく、使いやすくするために欠けている機能がいくつかあります。


この答えは今や本当に古くなっています。
ncoghlan 2016年


11

2014年後半以降、Continuum Analyticsのconacパッケージマネージャーを備えたAnaconda Pythonディストリビューションを検討する必要があります。一般的なPythonで発生する深刻な問題のほとんど(さまざまなPythonバージョンの管理、Pythonバージョンの更新、パッケージ管理、仮想環境、Windows / Mac互換性)を1つのまとまったダウンロードで解決します。

これにより、システムをまったく変更する必要なく、Pythonで実行できるほとんどすべてのことを実行できます。次に推奨される解決策はpip + virtualenvですが、virtualenvをシステムPythonにインストールする必要があります(システムPythonが必要なバージョンではない場合があります)。ソースからビルドする必要があります。Anacondaは、このプロセス全体をボタンをクリックするだけでなく、他の多くの機能を追加します。


7

それはeasy_installです。


1
と言ったページの全員に反対票を投じる場合はeasy_install、最初に日付を確認してください。それはそれがほぼ7年前に与えられたときに有効なアドバイスでした。回答者が定期的にこれを更新して更新することはないと思いますので、反対投票はばかげています。
Kirk Strauser 2016


5

MacPortsHomebrewも他の回答でここに記載されていませんが、関連する質問についてStack Overflowの他の場所で言及されているので、多くの人がMacPortsをパッケージだけではないと見なしているように思われる0.02ドルを追加します一般的なパッケージのマネージャー(今日の時点では、16311のパッケージ/ポート、2931に一致する "python"がリストされていますが、Macの場合のみです)だけでなく、Pythonパッケージ/モジュールのまともな(多分、より良い)パッケージマネージャーとしても表示されます。

質問

「... Mac python開発者がモジュールを管理するために使用する方法は何ですか?」

答え

SciPy

「Mac(Linuxとは異なり)にはパッケージマネージャーが付属していませんが、インストールできる人気のパッケージマネージャーがいくつかあります。Macports...」

私はまだMacPortsを自分で使用するかどうかについて議論していますが、現在はその方向に傾いています。


1
Homebrew自体は言う:(古いeasy_installまたは)でPythonパッケージをインストールできます pip install <your_favorite_package>
Simone

4

Windowsでは、http://chocolatey.org/をインストールしてから

choco install python

更新されたPATHで新しいcmd-windowを開きます。次に、

choco install pip

その後できます

pip install pyside
pip install ipython
...

トーマス・ブラットの答えに対するコメントとしてこれに答えたかったのですが、評判が十分ではありません...
hansvb

3

ここではpipenvについて誰も触れていないため、誰もがpythonパッケージの管理にそれを使用する必要がある理由について、私の見解を述べたいと思います。

@ColonelPanicが言及したように、Pythonパッケージインデックス、およびpipvirtualenvにもいくつかの問題があります。

Pipenvはpipの問題のほとんどを解決し、追加機能も提供します。

Pipenvの機能

Pipenvは、pipとvirtualenvを置き換えることを目的としています。つまり、pipenvはすべてのプロジェクトに対して個別の仮想環境を自動的に作成し、異なるプロジェクトの異なるpythonバージョン/パッケージバージョン間の競合を回避します。

  • 必要なものだけを簡単に指定しながら、真に確定的なビルドを可能にします。
  • ロックされた依存関係のファイルハッシュを生成およびチェックします。
  • pyenvが利用可能な場合、必要なPythonを自動的にインストールします。
  • Pipfileを探すことにより、再帰的にプロジェクトホームを自動的に見つけます。
  • Pipfileが存在しない場合は、自動的に生成します。
  • virtualenvを標準の場所に自動的に作成します。
  • パッケージがアンインストール/インストールされるときに、パッケージをPipfileに自動的に追加/削除します。
  • .envファイルが存在する場合、自動的にロードします。

以前にpythonプロジェクトに取り組んだことがあれば、これらの機能によりパッケージの管理がはるかに簡単になることに気付くでしょう。

その他のコマンド

  • checkセキュリティの脆弱性をチェックし、PEP 508の要件が現在の環境で満たされていることをアサートします。(これは特にこの後の素晴らしい機能だと思います-PyPiの悪意のあるパッケージ
  • graph インストールされている依存関係の依存関係グラフが表示されます。

詳細については、こちら-Pipenvをご覧ください

取り付け

あなたはここにインストールドキュメントを見つけることができます

PS:Pythonパッケージリクエストでの作業が好きなら、pipenvは同じ開発者のKenneth Reitzによるものであることを知って喜んでいます。



0

はあなたが探しているものです。実行中の依存関係管理、仮想環境を処理します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.