14

私は最近Pythonを学び始めましたが、パッケージの配布方法とインストール方法について少し混乱しています。

パッケージをインストールする公式の方法はdistutilsであることを理解しています。ソースのtarballをダウンロードして解凍し、次のコマンドを実行するとpython setup.py install、モジュールが自動的にインストールされます。

ヘルパースクリプトに付属しているsetuptoolsについても知っています。配布に卵easy_installを使用します。私が理解していることから、distutilsの上に構築され、上記と同じことを実行します。さらに、必要な依存関係をすべて処理し、すべてPyPiから取得します。

次に、pipもありますが、他のpipとどのように違うのかはまだわかりません。

最後に、私はWindowsマシンを使用しているため、多くのパッケージはWindowsインストーラーを介したバイナリビルドも提供します。特に、C / Fortranコードのコンパイルが必要なパッケージは、Windowsで手動でコンパイルするのは悪夢です(MSVCがあると仮定します)。または、必要なすべてのライブラリがセットアップされたMinGW / Cygwin開発環境..それでも、自分でnumpyまたはscipyを構築してみてください。そうすれば、理解できます!)

だから誰かが私がこれらすべてを理解するのを手伝って、それぞれの方法の違い、賛否両論を説明することができますか?それぞれがパッケージ(Windowsレジストリ、構成ファイルなど)を追跡する方法を知りたいです。特に、すべてのサードパーティライブラリをどのように管理しますか(インストールされているパッケージの一覧表示、無効化/アンインストールなど)。

4

2 に答える 2

11

私はWindowsではなくpipを使用しているため、Windowsインストーラーオプションとの比較はできません。pipに関する情報のみを提供します。

  • Pipはsetuptoolsの上に構築されており、インストールする必要があります。
  • Pipは、setuptoolsのeasy_installの代替(改善)です。easy_installが行うすべてのことに加えて、さらに多くのことを実行します(インストールの失敗を回避するために、実際にインストールする前に、必要なすべてのディストリビューションをダウンロードできることを確認し、インストールされているディストリビューションとバージョンを一覧表示し、アンインストールし、PyPIを検索し、複数のディストリビューションを一覧表示する要件ファイルからインストールします。バージョン...)。
  • Pipは現在、プリコンパイル済みまたはバイナリディストリビューションのインストールをサポートしていないため、コンパイルが必要な拡張機能を備えたディストリビューションは、適切なコンパイラが利用可能な場合にのみインストールできます。Windowsバイナリインストーラーからのインストールのサポートはロードマップにありますが、いつ行われるかは明確ではありません。
  • 最近まで、pipのWindowsサポートは不安定でテストされていませんでした。Dave Abrahamsの多くの作業のおかげで、pip trunkはWindowsでのすべてのテストに合格しました(継続的インテグレーションサーバーがその状態を維持するのに役立ちます)が、その作業を含むリリースはまだ作成されていません。したがって、次のリリースでは、より信頼性の高いWindowsサポートが提供される予定です。
  • すべての標準Pythonパッケージインストールメカニズムは、インストールされたディストリビューションに関するすべてのメタデータを、実際にインストールされたパッケージの隣の1つまたは複数のファイルに保存します。Distutilsはdistribution_name-XX-pyX.X.egg-infoファイルを使用し、pipは複数のメタデータファイルを含む同様の名前のディレクトリを使用します。Easy_installは、ディストリビューション用にインストールされたすべてのPythonコードを独自のzipファイルまたはディレクトリ内に配置し、メタデータを含むそのディレクトリ内にEGG-INFOディレクトリを配置します。インタラクティブプロンプトからPythonパッケージをインポートする場合は、packageの値を確認してください。__file__; そのパッケージのディストリビューションのメタデータが近くにあるはずです。
  • インストールされたディストリビューションに関する情報は、Windowsインストーラー、Apt、RPMなどのOS固有のパッケージツールによってのみ、あらゆる種類のグローバルレジストリに保存されます。標準のPythonパッケージツールは、これらのリストを変更したり、注意を払ったりしません。
  • Pip(または私の意見ではPythonパッケージツール)はvirtualenvで使用するのが最適です。これにより、システム全体に影響を与えることなくパッケージをインストールできる、プロジェクトごとの分離されたPythonミニ環境を作成できます。すべての新しいvirtualenvには、pipが自動的にインストールされています。

あなたが知っておきたいかもしれない他のいくつかのプロジェクト(はい、もっとあります!):

  • 配布は、いくつかの追加のバグ修正と機能を備えたsetuptoolsのフォークです。
  • distutils2は、Pythonパッケージの「次世代」となることを目的としています。それは(うまくいけば)distutils / setuptools / distribution/pipの最高の機能を採用しています。これは独自に開発されており、まだ使用する準備ができていませんが、最終的にはPython標準ライブラリのdistutilsに置き換わり、事実上のPythonパッケージソリューションになるはずです。

それが何かを明確にするのに役立ったことを願っています!幸運を。

于 2010-07-03T18:34:45.600 に答える
0

私はWindowsとPythonを使用しています。ピップが常に物をインストールするために機能するとは限らないので、それはややイライラします。Pythonはpipに移行しているので、私はまだそれを使用しています。アイテムをアンインストールして使用できるので、Pipは便利です

pip freeze > requirements.txt
pip install -r requirements.txt

私がpipを気に入っているもう一つの理由は、Python3.4を使用したvenvのような仮想環境のためです。私は、venvがvirtualenvよりもWindowsではるかに使いやすいことを発見しました。

パッケージをインストールできない場合は、そのバイナリを見つける必要があります。http://www.lfd.uci.edu/~gohlke/pythonlibs/

これらのバイナリは非常に便利であることがわかりました。

Pipは、バイナリインストール用のホイールと呼ばれるものを作成しようとしています。

pip install wheel
wheel convert path\to\binary.exe
pip install converted_wheel.whl

また、インストールされず、そのパッケージに必要な必要なライブラリに対してもこれを行う必要があります。

于 2014-07-09T12:06:32.853 に答える