flask打包exe教程

# Flask 打包为 EXE 教程(原理与详细介绍)

在本教程中,我们将学习如何将基于 Flask 的 Web 应用打包成一个可执行文件(EXE)。这对于在不安装 Python 和其他相关包的情况下,使终端用户能够方便地运行你的 Web 应用十分有用。我们将使用 PyInstaller 进行打包。

## 准备工作

确保你已经安装了 Python 3.6 或更高版本。接下来,我们将首先搭建一个简单的 Flask Web 应用,然后打包成 EXE 文件。

### 1. 安装 Flask

打开终端,运行以下命令安装 Flask:

```bash

pip install Flask

```

### 2. 创建 Flask Web 应用

在你的项目目录下,创建一个名为 `app.py` 的文件,然后输入以下代码:

```python

from flask import Flask

app = Flask(__name__)

@app.route('/')

def home():

return "Hello, Flask app!"

if __name__ == '__main__':

app.run(debug=True)

```

保存文件,然后在终端运行以下命令以测试你的应用:

```bash

python app.py

```

如果一切正常,应该会看到类似这样的输出:

```bash

* Serving Flask app "app" (lazy loading)

* Environment: production

WARNING: This is a development server. Do not use it in a production deployment.

Use a production WSGI server instead.

* Debug mode: on

* Restarting with stat

* Debugger is active!

* Debugger PIN: 123-456-789

* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)

```

此时,打开 Web 浏览器,访问 `http://127.0.0.1:5000/`,你应该会看到 "Hello, Flask app!" 的输出。

## 使用 PyInstaller 打包 Flask 应用

### 3. 安装 PyInstaller

在终端中运行以下命令,安装 PyInstaller。

```bash

pip install pyinstaller

```

### 4. 打包 Flask 应用

在项目目录下,打开终端,然后输入以下命令:

```bash

pyinstaller --onefile --add-binary "./venv/Lib/site-packages/your_depend_package_name_here;./your_depend_package_name_here" -w app.py

```

注意在 `--add-binary` 后面,替换 `your_depend_package_name_here` 为你应用所依赖的所有包的名称。例如,可以参照下面的命令:

```bash

pyinstaller --onefile --add-binary "./venv/Lib/site-packages/your_depend_package_name_here;./your_depend_package_name_here" -w app.py

```

执行上述命令后,PyInstaller 将开始打包你的应用。打包完成后,会生成一个名为 `dist` 的文件夹,里面包含了一个名为 `app.exe` 的可执行文件。

### 5. 测试 EXE 文件

双击 `dist` 文件夹中的 `app.exe` 以运行应用。检查终端中的输出,并使用浏览器访问 `http://127.0.0.1:5000/` 以确保你的应用正常运行。

## 原理介绍

PyInstaller 是一个用于打包 Python 应用的工具,它会收集应用需要的所有依赖项,然后将其打包成一个可执行文件。

在打包过程中,PyInstaller 将创建一个自解压的可执行文件。当用户运行这个可执行文件时,它将首先解压所有依赖项到临时目录,并加载运行你的应用所需的 Python 解释器和库。这使得终端用户无需预先安装 Python 或其他依赖项就可以运行你的 Web 应用。

通过使用 PyInstaller,我们可以将基于 Flask 的 Web 应用轻松打包为 EXE 文件,从而为最终用户提供一个简单、方便的应用分发方式。