10

Python の世界で uber-jar に相当するものを探しています。

  • 3 つの主要なプラットフォーム (Windows、Mac、Linux) すべてに Python パッケージを配布する必要があります。
  • ターゲット プラットフォームにはインターネットがない可能性があるため、すべての依存関係をバンドルする必要があります。
  • クロスプラットフォームのディストリビューションでなければならないので、複数のターゲット向けにビルドする必要はありません。つまり、次のようにすべてのプラットフォームで実行できるはずです。

    python package.ext

パッケージは純粋な python (ネイティブ コードなし) であると想定できます。 これらの要件を満たすものはありますか?

次のオプションを知っていますが、それぞれに欠陥があります。

  • .whlpipインストールに必要なパッケージ。
  • .eggすべてのパッケージの依存関係を含むを作成する方法がわかりません。
  • この PEP: http://legacy.python.org/dev/peps/pep-0441は、python が実行.zip中のファイルをサポートしていることを示していますが、AFAICT、そのような zip を作成するための最適なツールは pex ( https://github.com/pantsbuild /pex )、これは Windows をサポートしていないと思います
4

1 に答える 1

1

Java の「uber-jar」(たとえば、shade プラグインで作成) に代わる Python の 1 つは、単純に仮想環境全体の tarball を作成し、展開プロセスで使用することです。

このアプローチの問題は (JAR と同様に!)、パッケージの 1 つがネイティブ ライブラリを必要とする場合です。しかし、それは私が言う別の話です...

もう 1 つの (最新の) 代替手段は、単純に Docker イメージを作成することです。

于 2016-10-21T12:39:18.657 に答える