python3环境
支持Windows下和Linux下打包。

Pyinstaller安装

pip install pyinstaller

样例代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import os
import sys
from flask import Flask, render_template
from flask_cors import CORS

# 获取资源路径
def resource_path(relative_path):
if hasattr(sys, '_MEIPASS'):
return os.path.join(sys._MEIPASS, relative_path)
return os.path.join(os.path.abspath("."), relative_path)


app = Flask(__name__, static_url_path="", static_folder=resource_path('static'),
template_folder=resource_path("templates"))

# 允许全局跨域配置
CORS(app, supports_credentials=True)


@app.route('/')
def index():
return render_template('index.html')

app.run()

Pyinstaller打包示例代码(Win/Linux)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
from PyInstaller.__main__ import run
import platform

if __name__ == '__main__':
if platform.system() == "Windows":
opts = ['app.py', # 主程序文件
'-n McBetterMonitor', # 可执行文件名称
'-F', # 打包单文件
# '-w', #是否以控制台黑窗口运行
r'--icon=.\Creeper.ico', # 可执行程序图标
'-y',
'--clean',
'--workpath=build',
'--add-data=templates;templates', # 打包包含的html页面
'--add-data=static;static', # 打包包含的静态资源
'--distpath=build',
'--specpath=./'
]

run(opts)
elif platform.system() == "Linux":
opts = ['app.py', # 主程序文件
'-nMcBetterMonitor',
'-F', # 打包单文件
r'--icon=./Creeper.ico',
'--clean',
'--add-data=templates:templates', # 打包包含的html页面
'--add-data=static:static', # 打包包含的静态资源
]
run(opts)
else:
print(platform.system())

参考文章