捆绑python“;“后端”;phonegap应用程序中的代码

捆绑python“;“后端”;phonegap应用程序中的代码,python,plugins,cordova,client-server,Python,Plugins,Cordova,Client Server,短版: 有没有一种标准的方法可以将Python“后端服务器”类型的代码与phonegap客户端应用程序捆绑在一起 长版本: 我有很多应用程序正在考虑移植到phonegap。通常,应用程序是用Python编写的。其中一些具有web前端,一些是独立的Python应用程序,具有基于wxpython的接口 因此,每个应用程序都有一些客户端的东西,它们已经在html+javascript+css中,或者我很乐意将其转换为html+javascript+css 对于服务器端,对于某些应用程序,可以将服务器代

短版

有没有一种标准的方法可以将Python“后端服务器”类型的代码与phonegap客户端应用程序捆绑在一起

长版本

我有很多应用程序正在考虑移植到phonegap。通常,应用程序是用Python编写的。其中一些具有web前端,一些是独立的Python应用程序,具有基于wxpython的接口

因此,每个应用程序都有一些客户端的东西,它们已经在html+javascript+css中,或者我很乐意将其转换为html+javascript+css

对于服务器端,对于某些应用程序,可以将服务器代码留在服务器上。但对于一些/大多数人来说,我想将服务器端逻辑打包到phonegap应用程序中,这样它就可以成为一个独立的应用程序。这一要求来自两个需要。其中一个原因是,这些应用程序中有许多是用于应急响应的,即使在手机发射塔和其他网络基础设施不可用的情况下也需要工作。另一个原因很简单,一些应用程序非常简单,不能保证客户机/服务器体系结构——它们只是碰巧有很多用Python编写的“后端逻辑”类型的代码

现在,我知道我可以将所有的后端Python逻辑移植到javascript,但我希望找到一个解决方案,使这个庞大的代码库可以保留在Python中

我的想法是,我可以编写一个phonegap插件,它实际上包含完整的Python解释器(至少完整到足以处理代码库中的大部分内容)。(也就是说,iOS和Android都允许原生C代码,所以我应该能够从源代码编译Python——或者至少大部分Python——或者只链接到其他人构建的iOS和Android Python库。)

因此,在javascript代码中,我可以让客户端调用一些函数,如“InvokeBackEndMethod()”。这与ajax调用非常相似,但它不会在网络上调用,而是将查询/url/消息发送到Python插件。我的理解是,phonegap插件可以保持持久状态(例如,一个数据库插件允许您进行一次调用以打开数据库,然后进行后续调用以读取并关闭数据库)。因此Python“服务器”代码可以像在实际服务器上一样维护其状态。事实上,Python代码可能正在运行cherrpy这样的web框架,因此它实际上就像在同一个移动应用程序中同时运行客户端和服务器一样

我的问题是:

(1) 这个计划听起来合理吗


(2) 有人已经解决了这个问题吗?我希望找到一个名为“phonegap服务器”的项目,它本质上是一个“通用”phonegap扩展,从这个意义上说,它将接受来自客户端的任意调用,并将这些调用发送到您选择的各种机制:Python、Java、mono等(也就是说,这个通用phonegap扩展将得到“扩展”)通过不同的语言“插件”,然后这些插件将通过用户在给定语言中添加的任何业务逻辑得到“扩展”)。这可能是因为大多数人不需要这样的项目,因为他们不需要断开连接运行,并且/或者他们没有一个大的“后端”逻辑代码库,他们希望将其部署在独立的应用程序中,但保留原始语言。但似乎有些人一定需要这样做,不是吗?

您应该查看两个非常不同的计划: 允许导出到Xcode项目


在HTML5开发中使用Python而不是Javascript。

不,PhoneGap应用程序应该是客户端代码。但是,您可以在Java/Python代码中编写逻辑来包装PhoneGap代码。@limelights:对,我的扩展思想本质上是将Java/Python代码放入包装器中(即PhoneGap中嵌入浏览器之外的部分)。我的问题是是否有人已经为此建立了一个框架。pythonista是一个太多的“软件包”,只适用于iOS,但是brython看起来很有趣。我正在研究它的性能……嗯,我试过brython,还有pyjaco和py2js/睡衣。在所有情况下,我发现他们“还没有准备好迎接黄金时间”。Py2js非常复杂,但它仍然不支持我的代码中使用的所有python语法(这是可行的,因为我可以对代码进行常规修改以删除它们不支持的语法)。但致命的是,有了它们,很难找到你的虫子。它们提供最小的错误报告,并且很难在编译的javascript代码中设置断点,因为它是动态注入的(至少我不知道如何在这样的代码中设置断点)。@MKatz您是否同时找到了其他解决方案或测试了更新的版本?我想布莱顿来了很久了way@TobiasKienzler我们主要是使用C++嵌入服务器框架和JavaScript客户端部分的系统。我们仍然有一些使用Python的服务器代码的项目。我将查看对brython的更改。