python打包flask 项目_使用pyinstaller将flask应用打包

本文介绍了如何使用PyInstaller将Flask项目打包成可执行文件,包括处理依赖问题、使用gunicorn作为WSGI服务器、添加命令行工具支持以及处理数据库迁移。在打包过程中,需要处理隐藏导入、非Python文件的使用以及gunicorn与gevent的配合。
摘要由CSDN通过智能技术生成

Pyinstaller

用户将python程序打包成各个平台可直接运行的程序,也可以算作是对代码加密的一种方式。pyinstaller的安装及使用方式请参考官网。

注:该文章的系统环境是ubuntu

将flask应用打包

项目结构

这是我开发的一个项目,并且已经成功打包并上线运行

70a30944fade

项目结构

api 所有的代码都在里面

app.py只有一行代码,from api import create_app

开始打包

下面我们来将该项目打包pyinstaller -F app.py -name app, 通过这个命令,我们就能将整个项目打包成一个名为app的bin文件。直接运行./app,你会发现程序没有运行,因为app.py里面只是单纯的引入了app模块,如果你想通过flask run来执行的话,抱歉,app是个bin文件,不是python模块,会提示找不到app的,简单的解决办法就是在app.py文件中添加以下代码.

from api import create_app

if __name__ == "__main__":

app = create_app()

app.run()

然后在执行打包命令pyinstaller -F app.py -name app,这个时候我们的app就可以直接运行了./app,想要在启动的时候指定端口,主机名等等的参数,使用click.

使用gunicorn

总所周知,flask使用的是Werkzeug来作为它的WSGI server,但是性能很一般,生产环境一般会使用其他的WSGI server, 网上查到有以下WSGI server:

Gunicorn 独角兽,从Ruby的Unicorn移植过来的。

uWSGI 比较全能的一个WSGI server。

mod_wsgi 这个包提供了一个Apache模块,并实现了与wsgi兼容的接口,可以让python程序运行在Apache web server之上。

CherryPy CherryPy是Python的一个HTTP Framework,然后它也有WSGI server。

可能还有其他的一些WSGI server,对于这几种,哪个好,我也不知道,我只对于gunicorn熟悉,那么要使用gunicorn,app.py需添加以下代码:

import gunicorn.app.base

clas

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值