31

ゾーンファイルを解析するためにdnspythonに依存する単純なスクリプトがあります。2.6 / 2.7がインストールされている限り、ユーザーが実行できる単一の.pyとしてこのスクリプトを配布したいと思います。既存のパッケージ/バージョンと競合する可能性があるため、ユーザーにサイト全体に依存関係をインストールさせたくありません。また、virtualenvをいじくり回したくありません。スクリプト(gzip / base64)内にdnspythonのようなパッケージを埋め込み、実行時にそのスクリプトがそのパッケージにアクセスできるようにする方法があるかどうか疑問に思いました。おそらくそれを/tmpのdirに解凍し、それをsys.pathに追加しますか?起動時のオーバーヘッドについては心配していません。配布できるすべての依存関係を含む単一の.pyが必要です。

また、ビルドするCの依存関係はなく、純粋なpythonパッケージのみです。

編集:スクリプトは.pyである必要はありません。単一の実行可能ファイルである限り。

4

3 に答える 3

12

複数のPythonファイルを.eggにパッケージ化できます。Eggファイルは、基本的に、明確に定義されたメタデータを含む単なるzipアーカイブです。これを行う方法については、setuptoolsのドキュメントを参照してください。ドキュメントごとに、エントリポイントを指定することでeggファイルを直接実行可能にすることができます。これにより、コードとその他の依存関係を含むことができる単一の実行可能ファイルが得られます。

編集:今日、私はこれを行うためにペックスを構築することをお勧めします。pexは基本的に、stdlibに依存しない実行可能なzipファイルです。Pythonディストリビューション(py2app / py2exeなど)は含まれていませんが、他のすべてを保持しており、単一のコマンドライン呼び出しで構築できます。https://pex.readthedocs.org/en/latest/

于 2012-07-11T16:43:53.533 に答える
4

__main__.py最も簡単な方法は、純粋なPython依存関係で名前が付けられたPythonスクリプトをzipアーカイブに入れることです() 。

それ以外の場合は、 PyInstallerを使用してスタンドアロンの実行可能ファイルを生成できます。

于 2012-07-11T17:03:26.313 に答える
1

これをしないでください。あなたがそれを習慣にしないでください。

  • pydnsはBDSライセンスですが、この方法でgplモジュールを「埋め込む」と、問題が発生する可能性があります。
  • setuptoolsの使い方を学ぶことができ、長期的にははるかに幸せになります
  • setuptoolsは、特定した依存関係のインストールを処理します(使用しているpydnが純粋なPythonであるかどうかはわかりません。そのため、環境を知らずに自分で追加しようとすると、ユーザーに問題が発生する可能性があります)
  • urlまたはpypiを設定して、easy_install-Uを使用してスクリプトをアップグレードできるようにすることができます。
于 2012-07-11T16:41:08.480 に答える