4

私は、それ自体がそれほど複雑ではないシステムを開発しています。それぞれが独自の依存関係を持つパッケージのコレクションを持つ単なる virtualenv です。全部で (依存関係を含めて)、約 30 個のパッケージをインストールする必要があります。

次の制約により、セットアップが多少複雑になります。

  • インターネットへのアクセスは保証されません。実際、インストール時には PyPI が利用できないと想定しています。( virtualenv と company を可能にする非ネットワーク debian 安定リポジトリが利用可能です)
  • 一部のパッケージ/依存関係には、アプリケーションのパフォーマンスに不可欠な C 拡張が含まれています。
  • GCC と会社のインストールを回避するために、C エクステンションは事前にコンパイルしておくことが望ましいです。

これらの制約の中で、Python モジュールの依存関係をパッケージ化 (およびインストール) するための最速、最も簡単、または (できれば) 「正しい」方法は何ですか? 各パッケージのソースを取得して自分で bdist するだけですか?

4

3 に答える 3

5

この質問は少し古いですが、いずれにせよ、pipバージョン 1.4 (2013-07-23) 以降、wheel はより豊富なインターフェイスとより優れたサポートを備えたバイナリ配布形式としてサポートされています。このスレッドを見つけた人は、egg の代わりにwheelを使用することを検討してください。

使用例 (ホイールのドキュメントから):

要件とそのすべての依存関係のホイールをローカル ディレクトリにビルドするには:

pip install wheel
pip wheel --wheel-dir=/local/wheels -r requirements.txt

次に、wheels のローカル ディレクトリを使用して (PyPI からではなく) これらの要件をインストールします。

pip install --no-index --find-links=/local/wheels -r requirements.txt
于 2015-04-30T17:15:35.613 に答える
1

pip--find-linksオプションは、ローカル ディレクトリをサポートします。すべての sdist および Egg ディストリビューションを 1 つのディレクトリに配置するだけで、pip がそれらを見つけます。

setup.py bdist_eggバイナリ ディストリビューションは、コンパイルせずに簡単にインストールできるように、卵 (を使用) としてビルドします。

于 2012-09-25T19:43:45.743 に答える
0

私が今のところ落ち着いた方法はこれです:

# To gather together all of the dependencies (ex: pymongo, ujson):
easy_install -zmaxd /my/packaging/directory pymongo>=2.3 ujson

# Secondarily, package my custom module
/mymodule/setup.py sdist
cp /mymodule/dist/mymodule.tar /my/packaging/directory/

後で、世界中のほとんどのバージョンの pip が Egg をサポートしていないため、easy_install を使用してインストールすることもできます。(最近のバージョンの pip は、理解していますが、誰もが最新であるとは限りません):

easy_install -H None -f file:///installed/packaging/directory mymodule

mymodule の依存関係 これが機能するかどうかはまだわかりませんが、物事を行う「正しい」方法に近いようです。

Martijn さん、私に卵を教えてくれてありがとう。

于 2012-09-26T16:55:22.653 に答える