0
点赞
收藏
分享

微信扫一扫

【Web开发】Python实现Web服务器(Ubuntu下打包Flask)


【Web开发】Python实现Web服务器(Ubuntu下打包Flask)_pyinstaller

文章目录

  • ​​1、简介​​
  • ​​2、安装​​
  • ​​2.1 安装flask​​
  • ​​2.2 安装pyecharts​​
  • ​​2.3 安装pyinstaller​​
  • ​​3、打包​​
  • ​​3.1 pyinstaller参数​​
  • ​​3.2 打包测试(pyecharts)​​
  • ​​3.3 打包测试(flask)​​
  • ​​结语​​

1、简介

pyinstaller用于将Python文件和依赖包打包成为Linux可执行程序,方便在不同机器调用。
跨平台,支持win,linux,mac。

2、安装

2.1 安装flask

详细介绍见另一篇文章:《【Web开发】Python实现Web服务器(Ubuntu下安装Flask)》
​javascript:void(0)​​

2.2 安装pyecharts

pip installer pyecharts

【Web开发】Python实现Web服务器(Ubuntu下打包Flask)_python_02

2.3 安装pyinstaller

pip installer pyinstaller
# or
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple pyinstaller

【Web开发】Python实现Web服务器(Ubuntu下打包Flask)_pyecharts_03

find / -name "pyinstaller"

【Web开发】Python实现Web服务器(Ubuntu下打包Flask)_pyecharts_04


【Web开发】Python实现Web服务器(Ubuntu下打包Flask)_pyecharts_05


查看是否安装成功.

pip3 show pyinstaller

【Web开发】Python实现Web服务器(Ubuntu下打包Flask)_flask_06


如果执行pyinstaller -v,提示pyinstaller: command not found

通过vim ~/.bash_profile将配置到环境变量中

export PATH=/System/Volumes/Data/Users/**/Library/Python/3.7/bin:$PATH

然后source ~/.bash_profile出重新编译配置生效。

3、打包

(1)执行pip3 freeze > requirements.txt在本机中将项目所需的依赖输出到文本文件中。
(2)在服务器中进入虚拟环境,在执行pip3 install -r requirements.txt安装所需依赖包。
(3)执行pip3 install uwsgi安装uwsgi

3.1 pyinstaller参数

-h,--help 查看该模块的帮助信息
-F,-onefile 产生单个的可执行文件
-D,--onedir 产生一个目录(包含多个文件)作为可执行程序
-a,--ascii 不包含 Unicode 字符集支持
-d,--debug 产生 debug 版本的可执行文件
-w,--windowed,--noconsolc 指定程序运行时不显示命令行窗口(仅对 Windows 有效)
-c,--nowindowed,--console 指定使用命令行窗口运行程序(仅对 Windows 有效)
-o DIR,--out=DIR 指定 spec 文件的生成目录。如果没有指定,则默认使用当前目录来生成 spec 文件
-p DIR,--path=DIR 设置 Python 导入模块的路径(和设置 PYTHONPATH 环境变量的作用相似)。也可使用路径分隔符(Windows 使用分号,Linux 使用冒号)来分隔多个路径
-n NAME,--name=NAME 指定项目(产生的 spec)名字。如果省略该选项,那么第一个脚本的主文件名将作为 spec 的名字

打包命令:

pyinstaller -F xxx.py

3.2 打包测试(pyecharts)

chart.py:

from pyecharts.charts import Bar

bar = (
Bar()
.add_xaxis(["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"])
.add_yaxis("商家A", [5, 20, 36, 10, 75, 90])
)
bar.render()

执行打包操作如下:

pyinstaller -F chart.py

【Web开发】Python实现Web服务器(Ubuntu下打包Flask)_pyinstaller_07


【Web开发】Python实现Web服务器(Ubuntu下打包Flask)_python_08


执行打包后的程序chart

./dist/chart

【Web开发】Python实现Web服务器(Ubuntu下打包Flask)_flask_09


【Web开发】Python实现Web服务器(Ubuntu下打包Flask)_flask_10


程序执行后生成网页文件render.html。

将上面的网页文件下载到Windows电脑上运行如下:

【Web开发】Python实现Web服务器(Ubuntu下打包Flask)_pyecharts_11

记录运行过程的问题解决:
FileNotFoundError: [Errno 2] No such file or directory: ‘C:\Users\xxx\AppData\Local\Temp_MEI944442\pyecharts\datasets\map_filename.json’

Python38\site-packages\PyInstaller\hooks\ 需要增加如下文件hook-pyecharts.py,

  • hook-pyecharts.py:

# Hook for nanite: https://pypi.python.org/pypi/nanite 
from PyInstaller.utils.hooks import collect_data_files
datas = collect_data_files('pyecharts')

【Web开发】Python实现Web服务器(Ubuntu下打包Flask)_pyinstaller_12

3.3 打包测试(flask)

  • hello.py:

from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello_world():
return 'Hello World, 小沐!'

if __name__ == '__main__':
app.run()

执行打包操作如下:

pyinstaller -F hello.py

【Web开发】Python实现Web服务器(Ubuntu下打包Flask)_pyinstaller_13


【Web开发】Python实现Web服务器(Ubuntu下打包Flask)_webserver_14


执行打包后的程序hello

./dist/hello

【Web开发】Python实现Web服务器(Ubuntu下打包Flask)_pyinstaller_15


【Web开发】Python实现Web服务器(Ubuntu下打包Flask)_flask_16


举报

相关推荐

0 条评论