2012-04-18 13 views
4

私は、Backbone.jsを使って簡単なエディタを構築しています。ユーザーのためのアプリケーションとして配布して、ほとんどクライアント側でコンテンツを編集できるようにしたいと考えています(つまり、 MySQLやApacheのようなものを設定することでふさわしい)。 Flaskサーバーを実行可能ファイルとして簡単に配布する方法はありますか?

は、だから私はのようなシナリオを想像した

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

私の問題を解決するには、ユーザーがブラウザーでデータを編集し、使い慣れた形式(CSVをExcelなどに読み込むことができる)でデータを編集する手助けをしたいと考えています。

そして、私は彼らにサーバーを設定させずにこれをしたいと思います。これはHTML5スタックではほぼ可能なようです。私はこのようなエラーが発生しますので、しかし、少なくとも一つのブラウザ(クローム)で、これは、動作しません:

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

(奇妙なことに、私はFirefoxでそのエラーを取得し、.jsませんか.jsonファイルが正常に読み込まれます)

この時点で、これらのユーザーに何らかの種類のローカルサーバーを使用してBackboneインターフェイスを提供させることはできません。

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

この希望のある考えはありますか?私は問題の人にPythonをインストールできると思っています。

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

TIA!

+2

これはひどいですが、このパスを辿ると、梱包や流通に関してFlaskよりBottleよりも楽に時間がかかることがあります。 – dumbmatter

答えて

2

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

This SO answerをご利用ください。

更新された質問を読んだら、mongooseのようなものがあなたの仕事にもっと適していると思います。それは、FLOSSであり、Pythonバインディングを持つ組み込み可能なWebサーバーです。フラスコは過労かもしれない。

+0

こんにちはburhan、ご感謝のおかげで。私はちょうど私が何をしているかを説明するために少し私のコメントを明確にします。私は、ユーザーがデータベースにローカルにデータを保存するために起動できる単一マシンの_server_を配布する方法を探しています。 –

+0

すべての実用的な目的のためにはい。 –

1

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

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

もしあなたがMySQLやSQLiteのようなデータベースを必要とするなら、それらも含めなければならないので、もっと複雑になります。

+1

こんにちは。 Pythonがローカルにインストールされている場合はどうなりますか?私は問題の人のほとんどを知っています。彼らは技術的に全く無知ではないので、PythonをWindowsにインストールするようなことはおそらく実行可能です。そしてそれは小さなユーザーグループになります。 Flask(または何でも)サーバを何とかダブルクリックしてから、次のようなことをしてはいけません: import webbrowser; 輸入フラスコ; flask.startserver()#または何でも; webbrowser.open( 'http:// localhost:8000/myapp.html') –

+0

ちょうどその最後のオプションを試しましたが、アイコンをダブルクリックするとPythonスクリプトを実際に実行させる方法がないようです、少なくともOSXの下で...一息、私はたとえ何か意味があるかどうかわからない。 –

+0

http://www.pyinstaller.org/(@ Elvisの回答)のように見えますが、より実行可能な選択肢です。私はそれを知らなかった。 – six8

2

あなたはPyInstallerウェブサイトを引用アンソニーGordon McMillan’s PyinstallerまたはTuininga’s cx_Freeze

を使用することができます。

特長標準の実行可能ファイルへのPythonプログラムの

包装、パイソンのない コンピュータ上でその作業がインストールされています。

マルチプラットフォーム:

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

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

+0

PyInstallerはフラスコとsqlalchemyの依存関係でチョークするようです... – radix07

関連する問題