0

同僚がいくつかのtsvデータを分析するのに役立つ小さなPythonプログラムがあります。データは大きくなく、通常は20MB未満です。私はPyQTでGUIを開発しました。このデスクトッププログラムをWebアプリに変更したいので、プログラムを変更したりバグを修正したりするたびに同僚がプログラムをアップグレードする必要はありません。Webサイトにアクセスして、ChromeをGUIとして使用できます。では、どうすればこれを行うことができますか?私はほとんどの時間をデスクトッププログラムの開発に費やしており、Web開発の基本的な知識を知っています。私はflaskやweb2pyなどのフレームワークを読み、HTMLとJavascriptを使用してボタンを作成する方法を知っていますが、目的を達成するための手がかりはありません。

誰かが私にこれを行うための実用的な方法を教えてもらえますか?ユーザーがローカルデータをサーバーにアップロードする必要がない方がよいでしょう。たぶん、サーバーからPythonコードをダウンロードして、Chromeで実行するだけです。これは可能ですか?

ありがとう。

4

3 に答える 3

1

いいえ、WebブラウザでPythonコードを実行することはできません。[1] すべてをローカルで実行するには、アプリケーションのコアをJavaScriptに移植する必要があります。

アップロードするだけです。20MBはそれほど多くのデータではありません。サーバーに保存されている場合は、お互いの結果を確認することもできます。


[1] PythonをJavaScriptにトランスパイルしようとするツールいくつかあります。pyjsは直接コンパイルされ、EmscriptenはCPython自体を実行できるJSのLLVMインタープリター全体です。これらに依存することはお勧めしません。

于 2013-02-26T23:59:22.487 に答える
0

Webアプリケーションの要点は、GUIがPythonではなくHTML、CSS、およびJavaScriptで記述されていることです。ただし、 Pythonで記述できるWebサービスと通信します。

適切に作成されたデスクトップアプリの場合、移行は非常に簡単です。コードのGUI部分とエンジン部分をすでに明確に分離している場合、エンジン部分に必要な変更はわずかです(WSGIサーバーなどの背後に貼り付けることもできます)。Web用のGUI部分を書き直す必要がありますが、複雑なアプリでは、それは簡単な部分であるはずです。

ただし、多くのデスクトップGUIアプリには、このような明確な分離がありません。たとえば、モデルに直接何かを行うボタンハンドラーがある場合、両側(Python WebサービスとJSクライアントアプリ)でモデルを複製し、2つを同期しない限り、それを機能させる方法は実際にはありません。多くの作業と悪い経験につながります。その場合、アプリの大部分を最初から書き直すか、Webサービスで対応できるようにリファクタリングするかを決定する必要があります。

リファクタリングルートを選択する場合は、2番目のローカルインターフェイスを追加することを検討します(おそらく、cmdモジュールを使用してCLIを構築するかtkinter、代替GUIを使用します)。これは、はるかに簡単だからです。同じバックエンドコードがPyQtGUIとGUIをサポートできるようになるとcmd、Webインターフェイスの追加がはるかに簡単になります。

于 2013-02-27T00:18:53.290 に答える
0

私があなたの主張を正しく理解すれば、あなたは

  1. Web接続なので、Pythonプログラムがサーバー上で更新され、クライアントはそれを使用する前に取得します。
  2. 大きなファイルのアップロードを回避するためのローカルのデータストア。

必要に応じて、Pythonプログラムを作成してサーバーの場所を確認し、最新のプログラムを取得できます。更新する必要があるかどうかを判断するには、プログラムバージョン/作成日時情報のURL/サーバーファイルが必要です。最新のPythonプログラムを入手したら、このPythonプログラムを起動してローカルで実行します。

そうは言っても、必要なのはプログラムを更新して以下の機能を追加することです。

  • サーバーにアクセスして、最新のバージョン情報を取得します
  • 最新のプログラムをダウンロードする必要があるかどうかを確認するには、現在のバージョンと照合してください
  • 最新バージョンをダウンロードし、それを使用してローカルで実行します。

これで問題は解決しますか?

于 2015-10-06T20:43:22.970 に答える