开发 - 贡献¶
首先,你可能想了解一些基本的帮助 FastAPI 和获取帮助的方式。
开发¶
如果你已经克隆了fastapi 仓库,并且想要深入研究代码,这里有一些设置环境的指南。
虚拟环境¶
按照说明创建并激活一个用于 fastapi
内部代码的虚拟环境。
使用 pip 安装依赖¶
激活环境后,安装所需的包:
$ pip install -r requirements.txt
---> 100%
这将安装所有依赖项并在本地环境中安装你的本地 FastAPI。
使用本地 FastAPI¶
如果你创建一个导入并使用 FastAPI 的 Python 文件,并使用本地环境中的 Python 运行它,它将使用你克隆的本地 FastAPI 源代码。
如果你再次运行该 Python 文件时更新了本地 FastAPI 源代码,它将使用你刚刚编辑的最新版本的 FastAPI。
这样,你就不必“安装”你的本地版本即可测试每次更改。
"技术细节"
只有在使用这个包含的 requirements.txt
而不是直接运行 pip install fastapi
时才会发生这种情况。
这是因为 requirements.txt
文件中,本地版本的 FastAPI 被标记为以“可编辑”模式安装,使用 -e
选项。
格式化代码¶
有一个脚本可以运行,它会格式化和清理所有代码:
$ bash scripts/format.sh
它还会自动排序所有的导入。
测试¶
有一个脚本可以在本地运行,以测试所有代码并生成 HTML 格式的覆盖率报告:
$ bash scripts/test-cov-html.sh
此命令生成一个 ./htmlcov/
目录,如果你在浏览器中打开文件 ./htmlcov/index.html
,你可以交互式地探索测试覆盖的代码区域,并注意到是否有任何区域缺失。
文档¶
首先,确保你按照上述说明设置了环境,这将安装所有需求。
实时文档¶
在本地开发期间,有一个脚本可以构建站点并检查任何更改,实时重新加载:
$ python ./scripts/docs.py live
<span style="color: green;">[INFO]</span> Serving on http://127.0.0.1:8008
<span style="color: green;">[INFO]</span> Start watching changes
<span style="color: green;">[INFO]</span> Start detecting changes
它将在 http://127.0.0.1:8008
上提供文档。
这样,你可以编辑文档/源文件并实时查看更改。
Tip
或者,你可以手动执行脚本所做的相同步骤。
进入语言目录,对于主要文档的英文,它在 docs/en/
:
$ cd docs/en/
然后在那个目录中运行 mkdocs
:
$ mkdocs serve --dev-addr 8008
Typer CLI(可选)¶
这里的说明展示了如何直接使用 python
程序运行 ./scripts/docs.py
脚本。
但你也可以使用Typer CLI,并且在安装完成补全后,你将在终端中获得命令的自动补全。
如果你安装了 Typer CLI,你可以通过以下方式安装补全:
$ typer --install-completion
zsh completion installed in /home/user/.bashrc.
Completion will take effect once you restart the terminal.
文档结构¶
文档使用MkDocs。
并且有一些额外的工具/脚本用于处理 ./scripts/docs.py
中的翻译。
Tip
你不需要查看 ./scripts/docs.py
中的代码,你只需在命令行中使用它。
所有文档都以 Markdown 格式存储在 ./docs/en/
目录中。
许多教程都有代码块。
在大多数情况下,这些代码块是实际的完整应用程序,可以直接运行。
事实上,这些代码块并没有写在 Markdown 中,它们是 ./docs_src/
目录中的 Python 文件。
并且在生成站点时,这些 Python 文件会被包含/注入到文档中。
测试文档¶
大多数测试实际上是针对文档中的示例源文件运行的。
这有助于确保:
- 文档是最新的。
- 文档示例可以直接运行。
- 大多数功能都由文档覆盖,由测试覆盖率保证。
同时运行应用和文档¶
如果你运行示例,例如:
$ fastapi dev tutorial001.py
<span style="color: green;">信息</span>: Uvicorn正在运行于 http://127.0.0.1:8000 (按CTRL+C退出)
// 使用命令 "live" 并将语言代码作为 CLI 参数传递
$ python ./scripts/docs.py live es
<span style="color: green;">[INFO]</span> 正在提供服务 http://127.0.0.1:8008
<span style="color: green;">[INFO]</span> 开始监视更改
<span style="color: green;">[INFO]</span> 开始检测更改
$ cd docs/es/
$ mkdocs serve --dev-addr 8008
docs/en/docs/features.md
docs/es/docs/features.md
// 使用命令 new-lang,将语言代码作为 CLI 参数传递
$ python ./scripts/docs.py new-lang ht
成功初始化: docs/ht
INHERIT: ../en/mkdocs.yml
// 使用 "build-all" 命令,这会花费一些时间
$ python ./scripts/docs.py build-all
Building docs for: en
Building docs for: es
Successfully built docs for: es
// 在运行 "build-all" 后使用 "serve" 命令
$ python ./scripts/docs.py serve
Warning: 这是一个非常简单的服务器。对于开发,请使用 mkdocs serve 代替。
这里仅用于预览已经构建好的翻译站点。
确保你首先运行了 build-all 命令。
Serving at: http://127.0.0.1:8008