0

我有一个小python程序来帮助我的同事分析一些tsv数据。数据不大,一般在20MB以下。我用 PyQT 开发了 GUI。我想将此桌面程序更改为 Web 应用程序,这样我的同事就不必在每次更改或修复错误时都升级程序。他们只需访问一个网站并使用 Chrome 作为 GUI。那么我该怎么做呢?我大部分时间都在开发桌面程序,只知道一些基本的 Web 开发知识。我已经阅读了一些框架,例如flask和web2py,并且知道如何使用HTML和Javascript来制作按钮,但不知道如何实现我的目的。

有人可以给我一个实用的方法吗?如果用户不必将本地数据上传到服务器会更好。也许只是从服务器下载 python 代码然后在 Chrome 中执行。这可能吗?

谢谢。

4

3 回答 3

1

不,您不能在 Web 浏览器中运行 Python 代码。[1] 您必须将应用程序的核心移植到 JavaScript 才能在本地完成所有操作。

只做上传。20MB 并不是那么多数据,如果它存储在服务器上,那么他们也可以查看彼此的结果。


[1] 有一些工具试图将 Python 转换为 JavaScript:pyjs 直接编译,而 Emscripten 是一个完整的 JS 中的 LLVM 解释器,可以运行 CPython 本身。我真的不建议依赖这些。

于 2013-02-26T23:59:22.487 回答
0

Web 应用程序的全部意义在于 GUI 是用 HTML、CSS 和 JavaScript 编写的,而不是 Python。但是,它与可以用 Python 编写的 Web 服务通信。

对于编写良好的桌面应用程序,转换应该非常容易。如果您已经在代码的 GUI 部分和引擎部分之间进行了清晰的分离,那么引擎部分将只需要进行微小的更改(并且可能将其保留在后面,例如 WSGI 服务器)。您将不得不为 Web 重写 GUI 部分,但在复杂的应用程序中,这应该是简单的部分。

然而,许多桌面 GUI 应用程序并没有如此清晰的分离。例如,如果您有直接对模型执行操作的按钮处理程序,那么如果不在两侧(Python Web 服务和 JS 客户端应用程序)复制模型并同步两者,就没有办法让它工作,这是一个大量的工作并导致糟糕的体验。在这种情况下,您必须决定是从头开始重写您的大部分应用程序,还是将其重构到您可以对其进行 Web 服务化的程度。

如果您确实选择了重构路线,我会考虑添加第二个本地界面(可能使用该cmd模块来构建 CLI,或tkinter用于替代 GUI),因为这样做更容易。一旦相同的后端代码可以支持您的 PyQt GUI 和您的cmdGUI,添加 Web 界面就容易多了。

于 2013-02-27T00:18:53.290 回答
0

If I get your point correctly, you want

  1. Web connection, so your python program updated on server, client get it before using it.
  2. Data store on local to avoid upload big file.

You can write a python program to check a server location to get your latest program if needed. You need a url / server file for program version / created date/time information to determine if you need to update or not. After get latest python program, then start this python program to run locally.

With this said, What you need is to update your program to add below features:

  • Access your server, to get latest version information
  • Check against current version to see if you need to download latest program
  • Download latest version and use that to run locally.

Does this solve your problem?

于 2015-10-06T20:43:22.970 回答