Pyinstaller
用户将python程序打包成各个平台可直接运行的程序,也可以算作是对代码加密的一种方式。pyinstaller的安装及使用方式请参考官网。
注:该文章的系统环境是ubuntu
将flask应用打包
项目结构
这是我开发的一个项目,并且已经成功打包并上线运行
项目结构
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