在Python中运行独立的Web应用程序的选项
由于用独立的应用程序编写GUI很麻烦,因此我想到了用HTML进行移动的想法,当我开始感到自在时,便陷入了麻烦。
Python上的唯一选项是pywebview和cefpython。
有flexx和Firefox的基础,但是它仍然像β,所以暂时,请拭目以待
pywebview问题
pywebview是作为单个Web包装器完成的,但是内部运行的Web浏览器根据操作系统而不同,故障排除很困难,并且外观会根据浏览器,版本和Web引擎中的JavaScript略有变化,并且安全策略为非常不一样。特别是,MAC(Safari),Windows(IE或Chromium)和Linux(未验证)之间的操作差异很大。
特别是在Chromium的情况下,安全策略非常严格,因此您必须做疯狂的事情,即在应用程序中设置Web服务器并对其进行访问。有几种方法可以避免它,但是我不确定它可以使用多长时间(我尝试了所有过去的示例,但都失败了...)
有许多应用程序在Android应用程序的应用程序中设置了Web服务器,但是前一天有一个应用程序发现了安全漏洞,并且从外部完全可见其中的文件,但是
这是一个不好的示例,说bind =" 0.0.0.0"。
Google的作法是禁止访问本地资源作为一种安全措施,并制造一个安全漏洞。
启动内部Web服务器时,禁止主机规范bind =" 0.0.0.0"。那是通配符,意味着没有防护。您必须编写bind =" 127.0.0.1",以便只能在本地连接。
野生动物园(webkit)可以访问本地资源。换句话说,我想在一个独立的应用程序中使用Web UI,但是我不得不假定使用多个浏览器,并且Windows上的操作可疑,因此我拒绝了它。
cefpython问题
cefpython是用于嵌入cefpython的带有Chronium(CEF)的桥库,它的问题在于可以独立运行它,但不应使用它。您不能不以某种方式对其进行包装(pywebview具有引擎功能,并且可以选择cef,但是根据操作系统的不同,有时无法很好地安装它)
换句话说,有必要将其包装在某些GUI库中,但这只是一个恶魔之门……。
- 我必须使用很多Tkinker解决方法
- 奇异果包装库(garden.cefpython)存在问题,该问题偏爱操作系统且未正确维护。
- 需要为wxpython环境重新编译Python
我觉得我必须更改每个OS的实现,因为它会导致Windows和MAC出现太多问题,因为我强行移动了UNIX的库。
到目前为止,Java更容易实现,而我之前编写的解决方案就足够了。
使用Node.js Electron运行
由于GUI部分是用HTML JavaScript编写的,因此我将尝试激活表示完全使用JavaScript的解决方案。
应用程序本身使用Node.js,这一次我们将使用Electron作为Web引擎,使访问文档变得容易。
Elctron基于Chromium,但在访问本地资源时几乎不受保护。此功能消除了显示外部内容的使用,适用于仅在本地完成的独立GUI。
这就是为什么我将用Python编写的代码移植到JavaScript的原因。
实际上,除了语法以外,Python和JavaScript在语言规范上似乎并不相似,它们是相似的,最大的区别在于库和语法。在异步部分(线程和事件驱动)和类实现方法之间还有另一个很大的模型差异,但这是实现GUI时会出现问题的部分,因此在这种情况下无关紧要。
如果是纯Python代码而不使用Numpy或SciPy之类的库,则只是机械代码转换问题。 (首先,原始代码仅命中正则表达式...)
这几乎是逐字翻译,所以我觉得它可以自动化
最麻烦的事情是处理str.formatd,对于JavaScript,有必要实现一个回调函数(按原样使用tag函数样本)
由于Electron的Web浏览器与主要过程之间的数据交换类似于Woker,因此很难适应它,但是如果习惯了它可能会更容易。
此外,这很容易,因为它甚至可以构建。