我正在用Backbone.js构建一些简单的编辑器,我希望能够将它们作为应用程序分发,让用户以一种主要是客户端的方式编辑内容(也就是说,我不希望用户不得不在设置MySQL或Apache之类的东西时搞砸)。
所以我想象了一个场景:
1.用户下载.zip文件
1.在打开的文件夹中,用户单击index.html
1.在浏览器中打开的
- Backbone 应用程序启动,将数据存储在
localStorage
中
1.然后,用户可以导出为CSV。
信不信由你,这就解决了我的问题:我想帮助用户在浏览器中编辑数据,然后以熟悉的格式(例如,CSV可以加载到Excel中)将其恢复。
我希望在不强制他们配置服务器的情况下实现这一点。看起来这在HTML5堆栈中几乎是可能的。然而,至少在一个浏览器(Chrome)中,这是行不通的,因为我得到了如下错误:
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?py 2 exe?...)所以我想我会在这里问一下,以防有人知道我心目中的堆栈的解决方案。
TIA!
3条答案
按热度按时间6rqinv9w1#
您可以使用Anthony Gordon McMillan’s Pyinstaller或Tuininga’s cx_Freeze
引用PyInstaller网站的话:
特色
将Python程序打包成标准的可执行文件,可以在没有安装Python的计算机上运行。
多平台:在...下工作
多版本:可以在Python 2.2到2.7的任何版本下工作。
6tqwzwtp2#
我的建议是在代码周围创建一个瘦的服务 Package 器。这将允许服务器独立于主代码库运行-也允许用户直接关闭服务器(只需右键单击服务图标并选择“退出”)。
This SO answer应该可以帮助您入门。
在阅读了你更新的问题后,我认为像mongoose这样的东西可能更适合你的任务。它是一个可嵌入的web服务器,是FLOSS的,有python绑定。Flask可能是矫枉过正。
kx7yvsdv3#
不容易。在Windows上,你必须包含Python本身。Mac和Linux通常安装了Python,但是你不能确定是哪个版本,所以通常更容易为它们捆绑特定的Python。然后你必须在你的包中包含所有你想运行的依赖项,或者能够用pip、easy_install等安装它们。
你可以使用py2app和py2exe。这不会是跨平台的,因为你仍然需要为每个目标操作系统制作一个不同的版本。使它跨平台的唯一方法是捆绑所有版本,并让一些跨平台代码执行适合该平台的版本。
如果你需要像MySQL甚至SQLite这样的数据库,事情会变得更加复杂,因为你也必须包括这些。