4

私は Backbone.js でいくつかの単純なエディターを構築しています。ユーザーが主にクライアント側の方法でコンテンツを編集するためのアプリとしてそれらを配布できることを望んでいます (つまり、ユーザーが混乱する必要はありません)。 MySQL や Apache などを設定する必要があります)。

だから私は次のようなシナリオを想像していました:

  1. ユーザーが .zip ファイルをダウンロードする
  2. 結果として開いたフォルダーで、ユーザーは index.html をクリックします。
  3. ブラウザで開く
  4. バックボーン アプリが起動し、データが保存されますlocalStorage
  5. その後、ユーザーは CSV にエクスポートできます。

信じられないかもしれませんが、これで私の問題は解決します。ユーザーがブラウザーでデータを編集し、使い慣れた形式でデータを取得できるようにしたいと考えています (たとえば、CSV は Excel に読み込むことができます)。

そして、サーバーの構成を強制せずにこれを行いたいと思います。これは、HTML5 スタックではほぼ可能のようです。ただし、少なくとも 1 つのブラウザー (Chrome) では、次のようなエラーが発生するため、これは機能しません。

XMLHttpRequest cannot load file:///users/me/project/data/Appdata.json. Origin null is not allowed by Access-Control-Allow-Origin.

(奇妙なことに、Firefox ではそのエラーは発生せず、.jsまたは.jsonファイルは正常にロードされます。)

したがって、現時点では、これらのユーザーが何らかの種類のローカル サーバーを使用してバックボーン インターフェイスを提供することは避けられないように思えます。

そのため、ユーザーが Flask サーバーを起動できるようにする、配布可能なクロスプラットフォームの実行可能ファイルを作成する方法を見つけようとしています。(Backbone.js アプリへの REST バックエンドを構築したいと考えています。)

これは希望的観測ですか?問題の人にPythonをインストールしてもらうことができると思います。

これは実行可能ですか?Python プログラムをパッケージ化する方法はたくさんあるようです (pyinstaller? py2exe? ...) ですから、私が考えているスタックの解決策を誰かが知っているかもしれないので、ここで質問したいと思います。

ティア!

4

3 に答える 3

2

私の提案は、コードの周りに薄いサービスラッパーを作成することです。これにより、サーバーをメインコードベースから独立して実行できるようになります。また、ユーザーがサーバーを直接シャットダウンできるようになります(サービスアイコンを右クリックして[終了]を選択するだけです)。

このSOの答えは、始めるのに役立つはずです。

あなたの更新された質問を読んだ後、私はマングースのようなものがあなたの仕事により適しているかもしれないと思います。これは、FLOSSであり、Pythonバインディングを持つ埋め込み可能なWebサーバーです。フラスコはやり過ぎかもしれません。

于 2012-04-18T04:25:47.697 に答える
2

Anthony Gordon McMillan の PyinstallerまたはTuininga の cx_Freezeを使用できます

PyInstaller Web サイトの引用:

特徴

Python がインストールされていないコンピューターで動作する、標準の実行可能ファイルへの Python プログラムのパッケージ化。

マルチプラットフォーム: 下で動作します

  • Windows (32 ビットおよび 64 ビット)、
  • Linux (32 ビットおよび 64 ビット)、
  • Mac OS X (32 ビットのみ、git では 64 ビット、Features/MacOsCompatibility を参照)、および実験的に Solaris および AIX (git 内)。

マルチバージョン: 2.2 から 2.7 までの任意のバージョンの Python で動作します。

于 2012-04-18T04:31:52.250 に答える
1

簡単ではありません。Windowsでは、Python自体を含める必要があります。MacとLinuxには通常Pythonがインストールされていますが、バージョンがわからないため、特定のPythonをバンドルする方が簡単な場合がよくあります。次に、実行するすべての依存関係をパッケージに含めるか、pip、easy_installなどを使用してそれらをインストールできるようにする必要があります。

py2apppy2exeを使用できます。ターゲットOSごとに異なるバージョンを作成する必要があるため、これはクロスプラットフォームにはなりません。クロスプラットフォームにする唯一の方法は、すべてのバージョンをバンドルし、いくつかのクロスプラットフォームコードにそのプラットフォームに適したバージョンを実行させることです。

MySQLやSQLiteのようなデータベースが必要な場合は、それらも含める必要があるため、さらに複雑になります。

于 2012-04-18T04:29:37.303 に答える