有没有一种简单的方法可以将Flask服务器作为可执行文件分发?

2024-04-27 20:27:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用Backbone.js构建一些简单的编辑器,我希望能够将它们作为应用程序分发给用户,以便以一种主要是客户端的方式编辑内容(即,我不希望用户必须安装像MySQL或Apache这样的东西)。

所以我想象了一个场景:

  1. 用户下载.zip文件
  2. 在结果打开的文件夹中,用户单击index.html
  3. 在浏览器中打开的
  4. 主干应用程序启动,将数据存储在localStorage
  5. 然后用户可以导出到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文件加载得很好。)

所以在我看来,让这些用户使用某种本地服务器来提供主干接口是不可能的。

所以,我试图找出如何构建一个可分发的跨平台可执行文件,允许我的用户启动Flask服务器。(我希望为Backbone.js应用程序构建一个REST后端。)

这是一厢情愿吗?我想我可以让相关人员安装Python。

这可行吗?似乎有很多方法可以打包Python程序(pyinstaller?py2exe?…)所以我想我会问这里,以防有人知道我想的堆栈的解决方案。

蒂亚!


Tags: 文件csv数据用户服务器json应用程序编辑
3条回答

我的建议是在代码周围创建一个瘦的服务包装器。这将允许服务器独立于主代码库运行,也允许用户直接关闭服务器(只需右键单击服务图标并选择“退出”)。

This SO answer应该可以帮助您开始。

在阅读了您更新的问题之后,我认为像mongoose这样的东西可能更适合您的任务。它是一个可嵌入的web服务器,是FLOSS,具有python绑定。烧瓶可能有点过头了。

不容易。在Windows上,必须包含Python本身。Mac和Linux通常都安装了Python,但您不能确定是哪个版本,因此通常也更容易为它们打包特定的Python。然后,您必须在包中包含所有要运行的依赖项,或者能够使用pip、easy_install等安装这些依赖项

您可以使用py2apppy2exe。这不会是跨平台的,因为您仍然需要为每个目标操作系统制作不同的版本。使其跨平台的唯一方法是捆绑所有版本,并让一些跨平台代码为该平台执行适当的版本。

如果你需要像MySQL甚至SQLite这样的数据库,事情会变得更加复杂,因为你也必须包含这些数据库。

您可以使用AnthonyGordon McMillan’s PyinstallerTuininga’s cx_Freeze

引用PyInstaller网站:

Features

Packaging of Python programs into standard executables, that work on computers without Python installed.

Multiplatform: works under

  • Windows (32-bit and 64-bit),
  • Linux (32-bit and 64-bit),
  • Mac OS X (32-bit only, 64-bit in git, see Features/MacOsCompatibility) and experimentally Solaris and AIX (in git).

Multiversion: works under any version of Python from 2.2 up to 2.7.

相关问题 更多 >