【问题标题】:How to deploy flask GUI web application only locally with exe file?如何使用 exe 文件仅在本地部署烧瓶 GUI Web 应用程序?
【发布时间】:2019-08-15 19:33:15
【问题描述】:

我想为我编写的一些 Python 函数构建一个 GUI,用于从 MS SQL Server 中提取数据。我的老板希望我与团队其他成员分享 Python 和 SQL 的魔力,而无需他们学习任何编码。

我决定使用 Flask 创建 webapp 并使用 pyinstaller 创建可执行文件。我希望它的工作方式与 Jupyter Notebook 类似,您可以在其中单击文件并在浏览器中打开该笔记本。

我能够拼凑一些代码来获得 GUI 的工作原型。问题是我不知道如何部署它。我需要 GUI/Webapp 仅在本地计算机上为我发送文件的用户运行,并且我不希望通过 Internet 访问它(因为专有公司数据、安全问题等)。

我能找到的用于部署 Flask 的唯一文档是使用 Web 服务器的常规路线。

所以问题是,任何人都可以就如何部署我的 GUI WebApp 以使其仅对拥有该文件的用户可用,而不是在万维网上可用提供任何指导吗?

谢谢!

【问题讨论】:

  • 它不必通过互联网访问。它可以在公司网络的服务器上运行,无需从互联网访问。并且您可以轻松地在服务器上更新烧瓶,这样所有用户都将拥有新功能,而无需重新安装 .exe 文件。
  • 让它只听localhost
  • 如果您想创建 .exe,请检查 PyInstallerpy2execx_Freeze 等。但有时他们可能无法创建 .exe,您可能需要深入了解文档。

标签: python user-interface flask web-applications


【解决方案1】:

因此,有一些假设——因为你是一家企业并且你正在使用 SQLServer——你可能有 Active Directory,并且你想访问这个应用程序的计算机都连接到该域(所以,实际上,您或您的系统管理员确实可以完全控制这些计算机)。

此外,应用程序的主要功能是访问 SQLServer 以在对数据执行操作之前使用数据填充自身。如果您正在部署该应用程序,我猜您可能还包括 SQLServer 登录详细信息。

考虑到这一点,我只会在自己的机器上为网络上的 Flask 应用程序提供服务(如果你有选择的话,甚至可以是 SQLServer 机器),然后在应用程序中实现安全性,以通过 AD 进行身份验证,或者只是有一个简单的用户/通过身份验证,您可以分发给用户。默认情况下,在线随机计算机将无法访问该应用程序,除非您将防火墙设置为故意将 WAN 流量路由到该应用程序。

这样,您就可以控制 Flask 服务器 - 只需一次更新,使开发更容易,用户只需打开您发送的电子邮件中的链接或您在他们桌面上留下的快捷方式。

【讨论】:

    【解决方案2】:

    很遗憾,您无法控制给用户的计算机。

    您正在使用烧瓶,因此您的应用程序是一个 Web 应用程序,它会将您的数据暴露给某个端口。我相信默认的烧瓶端口是 5000。

    无论如何,如果您的用户在他们的防火墙中打开了给定端口,并且在您连接的任何路由器上也打开了该端口,那么您的应用程序将是公开可见的。

    您无法从您的 Python 应用程序代码中执行任何操作来防止这种情况发生。

    话虽如此,如果您在 5000 上运行,您的用户极不可能公开此端口。如果您在端口 80 或 8080 上运行,那么您可能会暴露某些东西的可能性更高。

    后续问题是您的网络应用程序连接到的数据库在哪里?它也在您的用户机器上吗?如果没有,并且您的网络应用程序可以连接到它,而不管您在哪台机器上运行它,我会更担心您的数据库会被公开。

    【讨论】:

      猜你喜欢
      • 2018-09-03
      • 2012-08-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-19
      • 1970-01-01
      • 2021-12-12
      相关资源
      最近更新 更多