easy_install / pipまたはapt-get


30

Railsの Ubuntu wikiページで述べたように、gemsがRails / Rubyの依存関係を管理することをお勧めします。

DjangoのようなPythonパッケージのベストプラクティスは何ですか?apt-getでインストールする必要がありますか、それともeasy_install / pipでPyPiから取得する必要がありますか?

回答:


29

いくつかの引数があります:

  1. リポジトリ/ PPAを使用すると、セキュリティの修正により、安定した最新の状態が維持されます。

    これはほとんど真実です。たとえば、python-django私が持っているようにインストールすると、セキュリティ更新プログラムを入手できます。これは良いことです。aptを把握するだけでよいのですが、更新をプッシュする前にテストする必要があります(テストは毎回うまくいくはずです)。

    を使用した場合pip、更新プログラムをチェックしない可能性があると主張できます。

  2. 使用pipあなたが適切な「安定」バージョンを使用できるように。

    それについて疑いの余地はありません。リポジトリは実世界に遅れをとっています。Djangoは2.0ですが、UbuntuのLTSバージョン(多くの人がサーバーに固執している)のリポジトリは、Python 2を搭載したUbuntu 16.4 ltsでは1.8しか取得できませんが、それでもセキュリティ更新プログラムは取得できます。

    pip常に最新の情報を提供します。自分で更新する必要があります。

  3. リポジトリを使用したPythonインストールのアップグレードは悪夢のようです

    Ubuntuを次のバージョンにdist-upgradeすると、多くのパッケージがアップグレードされます。多くのことが変わります。Djangoでは、これは、コードの非互換性、廃止予定に注意する必要があることを意味しますが、他のすべてのPythonコードにも同じことが当てはまります。

    用も同様ですpipが、とpip一度に一つのことをやってもらいます。問題の原因を知っているので、修正箇所を探す場所を知ることができます。

  4. pip+ virtualenv物事を分けておくことができます

    virtualenv移植可能な、小さなPython環境を使用できます。これにより、同じマシン上でいくつかの異なるPython環境を並行して実行できます。

    コードを管理するのと同じ方法で環境を管理できるので、明らかな恩恵はメンテナンスのようです。環境もVCSに保存します... しかし、 12個の異なるvirtualenvsがあるということは、チェックと更新が必要な12個の環境を意味することを覚えておいてください。


編集:サーバー上で恐ろしい一連のアップグレードを行ってLucidからPreciseに変更した後、Apt + pipが混在する(nr 1および2)から純粋なpip + virtualenv(nr。4)の状況に切り替えました。サイトごとに1つのvirtualenvを使用する代わりに、1ダースほどのサイト間で1つのvirtualenvを共有します。これは今のところ機能しています。

また、pipでインストールされたパッケージの状態を確認する小さなスクリプトを作成する必要がありました。更新がある場合、手動で適用する必要があります(ローカルのvirtualenvでローカルにテストするため、これは良いことです)。これは、当初よりもやや痛みがありますが、長期的にはずっと良くなります。


10
  • リポジトリからのパッケージ

    これらは、アプリケーションが何らかの方法でUbuntuに固有である場合は常にインストールする必要があります。Ubuntuマシン全体にインストールできる安定したバージョンを保証します。サポートされており、pipで取得するものよりも成熟している場合があります。多数のubuntuサーバーをデプロイする場合、またはUbuntuアプリケーションを作成している場合は、使用可能な場合はこれらを使用します

    また、Ubuntu固有の変更が含まれることもあります。

  • pip vs easy_install

    DjangoのハッカーJames Bennettが言ったように、それらについて言うことはあまりありません。

    Guidoの愛のために、setuptoolsとeasy_installの使用をやめて、代わりにdistutilsとpipを使用してください。

    違いについての詳細な議論については、James Bennettによるパッケージングについて(djangoの)およびIan Bickingによる「パッケージングについてのいくつかの修正」(mozillaの)を参照してください。

安全にしたい場合は、virtualenvを使用してpipデプロイメントを試してください。これにより、孤立したpython環境が提供されるため、アプリがどのマシンでも実行できることを確認できます。

少し待ってください。一部の人々は私に反対すると信じています。

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