# Spaces 上的 Dash

借助 Dash Open Source，您可以使用纯 Python 在笔记本电脑上创建数据应用，无需使用 JavaScript。

通过构建一个[示例应用](https://dash.plotly.com/tutorial)来熟悉 Dash，该应用基于开源构建。当您的 Dash 应用准备供部门或全公司使用时，可通过[Dash Enterprise](https://plotly.com/dash/)进行扩展。或者，从一开始就使用 Dash Enterprise 启动您的项目，以释放开发生产力的提升，并获得 Plotly 团队的实操加速支持。

## 在 Spaces 上部署 Dash

要在 Spaces 上开始使用 Dash，请点击下方按钮：

    

这将开始使用 Plotly 的 Dash Docker 模板构建您的 Space。如果成功，您应该会看到一个与 [Dash 模板应用](https://huggingface.co/spaces/dash/dash-app-template) 类似的应用程序。

## 自定义您的 Dash 应用

如果您之前从未使用过 Dash 进行开发，我们建议您从我们的 [Dash 20 分钟入门教程](https://dash.plotly.com/tutorial) 开始。

创建 Dash Space 时，您将获得几个关键文件以帮助您快速上手：

### 1. app.py

这是定义项目核心逻辑的主应用文件。Dash 应用通常以模块的形式组织，您可以选择将布局、回调和数据分离到其他文件中，例如 `layout.py` 等。

在 `app.py` 中，您会看到：

1. `from dash import Dash, html` 我们导入 `Dash` 对象来定义应用程序，并导入 `html` 库，该库提供了用于组装项目的构建模块。

2. `app = Dash()` 在这里，我们定义了应用。布局、服务器和回调函数都_绑定_到`app`对象上。

3. `server = app.server` 在这里，我们定义了服务器变量，用于在生产环境中运行应用。

4. `app.layout = ` 初始应用布局被定义为一个 Dash 组件列表、单个 Dash 组件，或返回其中任意一种的函数。

   `app.layout` 是您的初始布局，它将作为单页应用程序，通过项目中的回调和其他逻辑进行更新。

5. `if __name__ == '__main__': app.run(debug=True)` 如果您在本地使用 `python app.py` 运行项目，`app.run(...)` 将会执行并启动一个开发服务器来运行您的项目，该服务器具备热重载、回调图等功能。

   在生产环境中，我们推荐使用 `gunicorn`，这是一款生产级服务器。使用 `gunicorn` 运行项目时，调试功能不会启用，因此这行代码永远不会被执行。

### 2. Dockerfile

Dash 应用的 Dockerfile 非常简洁，因为 Dash 的系统依赖很少。关键要求如下：

- 它会安装`requirements.txt`中列出的依赖项（使用`uv`）
- 它会创建一个非 root 用户以增强安全性
- 它使用 `gunicorn app:server --workers 4` 通过 `gunicorn` 运行该应用

如果应用程序需要额外的系统依赖项、权限或其他 CLI 标志，您可能需要修改此文件。

### 3. requirements.txt

Space 会自动安装 `requirements.txt` 文件中列出的依赖项。至少，您必须在此文件中包含 `dash` 和 `gunicorn`。您还需要添加应用程序所需的其他任何软件包。

Dash Space 模板提供了一个基础配置，您可以根据需求对其进行扩展。

## 其他资源和支持

- [Dash 文档](https://dash.plotly.com)
- [Dash GitHub 仓库](https://github.com/plotly/dash)
- [Dash 社区论坛](https://community.plotly.com)
- [Dash Enterprise](https://plotly.com/dash)
- [Dash 模板 Space](https://huggingface.co/spaces/plotly/dash-app-template)

## 故障排除

如果您遇到问题：

1. 确保您的笔记本在本地以应用模式运行，使用 `python app.py`
2. 检查所有必需的包是否都列在 `requirements.txt` 中
3. 验证端口配置是否匹配（7860 是 Spaces 的默认值）
4. 检查 Space 日志中是否存在任何 Python 错误

如需更多帮助，请访问 [Plotly 社区论坛](https://community.plotly.com) 或 [提交 issue](https://github.com/plotly/dash/issues)。

