为什么要将flask webapp作为包安装?

时间:2017-04-27 15:51:22

标签: python flask

我最近一直在研究烧瓶,在查看烧瓶网站上的教程信息时,他们将您的演示webapp安装为python软件包。  我也在其他一些演示烧瓶webapps中看到了这一点,但我还没有看到你为什么会这样做的原因。开发服务器在没有这个的情况下呈现应用程序,我会假设生产服务器一旦设置正确就可以了。

这可能是一个根本没有正确心态的问题,但我无法找到我想要这样做的原因。它是为了便于复制还是其他一些东西?

3 个答案:

答案 0 :(得分:3)

它使您在不同环境中的程序的推理变得更简单,但如果您没有遇到与之相关的问题,可能很难看出。

主要原因是处理Python路径。如果您没有安装应用程序,那么您依赖于Python在运行程序时隐式添加当前目录。通常,您从项目根目录开始运行,因此一切正常。但是在生产中,WSGI服务器将从其他地方运行(例如,系统服务),因此您必须跳过箍来设置Python路径,否则会出现导入错误。如果您安装了软件包,无论运行什么,它都会在路径上。

此外,安装应用程序意味着使用虚拟环境并保持依赖关系,而不是安装到系统Python。

最终,它受到鼓励,因为它让您考虑如何使您的应用程序可重用,而不是依赖于您的存储库的结构和位置。

部署故事变为:

python setup.py bdist_wheel  # create the package
# copy dist/package.whl to the remote
pip install -U package.whl  # upgrade it in your virtualenv
# restart the server process

答案 1 :(得分:1)

设置生产服务器以部署所需的一切而不打包它会涉及到什么?

  • 正确的Python版本
  • 正确的Python包
  • 足够的记忆
  • 安全性,以确保没有任何有权访问该框的人可以突然提交对您的仓库的更改

如果您打包了webapp,则可以缓解或消除大部分问题。

  • 您需要的版本将由您的webapp指定,并且您无论如何都必须安装它。
  • 您需要的软件包可以通过使用软件包管理器来下载,从而无需手动安装这些软件包。
  • 如果您根本不将此软件包挂钩到代码存储库,那么就不必担心来自外部的入侵。

此外,一个包更加消费者友好。当然,我们作为开发人员在设置代码和环境方面工作得很好,但是如果你想快速展示一些东西,那么你要做的最后一件事是迫使某人必须先下载所有的依赖关系和先决条件 他们可以运行您的应用。

答案 2 :(得分:0)

通过安装,您可以更轻松地测试应用。另请查看Flask文档article。它说:

  

安装还带来了其他好处,这些好处可能并不明显   来自本教程或作为Python新用户,包括:

     
      
  • 当前,Python和Flask仅在从项目目录运行时才了解如何使用flaskr软件包。   安装意味着无论您从哪里运行都可以导入它。
  •   
  • 您可以像其他软件包一样管理项目的依赖项,因此pip install yourproject.whl会安装它们。
  •   
  • 测试工具可以将您的测试环境与开发环境隔离。
  •