惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

B
Blog RSS Feed
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
GbyAI
GbyAI
MongoDB | Blog
MongoDB | Blog
Microsoft Azure Blog
Microsoft Azure Blog
V
Visual Studio Blog
腾讯CDC
G
Google Developers Blog
宝玉的分享
宝玉的分享
I
InfoQ
F
Fortinet All Blogs
Engineering at Meta
Engineering at Meta
Vercel News
Vercel News
云风的 BLOG
云风的 BLOG
博客园 - 【当耐特】
酷 壳 – CoolShell
酷 壳 – CoolShell
Google DeepMind News
Google DeepMind News
阮一峰的网络日志
阮一峰的网络日志
罗磊的独立博客
IT之家
IT之家
D
DataBreaches.Net
Martin Fowler
Martin Fowler
月光博客
月光博客
Hugging Face - Blog
Hugging Face - Blog

博客园 - VipSoft

FastAPI 全局 HTTP 异常处理器 + 统一响应封装 SpringBoot 心跳日志不记录 access.log Qdrant Linux 安装(非Docker) LangChain — RAG 知识库(实操) LangChain — RAG 构建知识库(理论) LangChain — RAG 构建知识库(实操) Python PyCharm 运行,取不到 .env 文件中的值 Qdrant 安装(Windows) LangChain — RAG 构建知识库 MinerU - 将非结构化文档(PDF、图片、Office 文件等)转换为机器可读的 Markdown 和 JSON LangChain 入门 服务端部署-FastAPI LangChain 入门 LangSmith LangChain 入门 实战 - 食谱推荐 LangChain 入门 Memory 会话记忆 LangChain 入门 Tools 工具 LangChain 入门 Tools 工具 LangChain 入门 Prompts 提示词 LangChain 入门 Message 消息 LangChain 入门 Model 的初始化和调用 LangChain 入门 Agent 的基本运行机制 AI 0基础学习,名词解析 LangChain 和 LangGraph AI大模型知识体系 Dify — Workflow - 数据可视化 Dify — 连接MySQL配置 Dify — Chatflow - 数据库智能查询 Dify — Chatflow - 文档知识库 Dify — Agent 智能体 高安全券码、注册码生成 Dify — 文本生成应用
Python 项目简单部署(Linux)
VipSoft · 2026-07-22 · via 博客园 - VipSoft

项目构建

UV安装

忽略安装过程,Windows可参考: Windows 安装 UV

初始项目

D:\OpenSource\Python\DeployDemo>uv --version
uv 0.9.18 (0cee76417 2025-12-16)

D:\OpenSource\Python\DeployDemo>uv python install 3.12
Python 3.12 is already installed

D:\OpenSource\Python\DeployDemo>uv init -p 3.12
Initialized project `deploydemo`

D:\OpenSource\Python\DeployDemo>uv run main.py
Using CPython 3.12.12
Creating virtual environment at: .venv
Hello from deploydemo!

D:\OpenSource\Python\DeployDemo>

uv init -p 3.12 会生成4个文件

deploydemo
├── .python-version //项目使用的 Python 的版本
├── README.md       //空的项目说明文件
├── main.py         //包含一个简单的示例代码。
└── pyproject.toml  //定义项目的元数据,如名称、版本和依赖项。

uv run main.py 后会生成 .venv 目录和 uv.lock文件

deploydemo
├── .venv   //虚拟环境,为项目提供了一个与操作系统和其他项目完全隔离的独立Python运行空间
└── uv.lock //跨平台的锁文件,记录了项目所有直接和间接依赖的精确版本号及校验哈希值。确保了无论在哪台机器上安装,得到的依赖树都完全一致,从而实现可重复构建。

uv.lock 需要提交到git,它是确保团队协作和部署时环境一致性的关键文件

image

构建 FastAPI

D:\OpenSource\Python\DeployDemo>uv add fastapi --extra standard

--extra standard 表示:安装 FastAPI 定义的名为 standard 的一组可选依赖。

uv add fastapi --extra standard

基本等价于:

uv add "fastapi[standard]"

除了 FastAPI 核心包,还会安装常用功能所需的依赖,例如:

  • uvicorn[standard]:运行 ASGI 服务
  • fastapi-cli:提供 fastapi devfastapi run
  • python-multipart:处理表单和文件上传
  • jinja2:HTML 模板
  • httpx:测试客户端等
  • email-validator:邮箱字段校验

不加 --extra standard

uv add fastapi

只安装 FastAPI 的核心依赖,体积更小,但运行服务等功能可能需要你自行添加依赖。

注意命令中应使用英文空格,不要包含中文逗号 。通常开发 FastAPI 项目推荐:

uv add fastapi --extra standard

修改 main.py 代码

from fastapi import FastAPI
import time

app = FastAPI()

@app.get("/")
def read_root() -> dict:
   return {"message": f"Hello, FastAPI with UV!{time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())}"}

本地运行

# 切换到代码目录下,项目中的 \.venv\Lib\site-packages\uvicorn 运行
D:\OpenSource\Python\DeployDemo>uv run uvicorn main:app --reload --host 0.0.0.0 --port 8001
INFO:     Will watch for changes in these directories: ['D:\\OpenSource\\Python\\DeployDemo']
INFO:     Uvicorn running on http://0.0.0.0:8001 (Press CTRL+C to quit)
INFO:     Started reloader process [78068] using WatchFiles
INFO:     Started server process [76700]
INFO:     Waiting for application startup.
INFO:     Application startup complete.
  • uvicorn : ASGI(Asynchronous Server Gateway Interface)服务器,用于构建异步 Web 服务,可以理解成 Tomcat、IIS 类似的产品

  • main:app : 前面是文件路径,如果有目录,会写在 uvicorn project.main:app, app是变量名, FastAPI 的实例,app = FastAPI()

  • --reload : 选项的作用是在代码发生变化时自动重新加载应用,以便进行开发和调试。不建议在生产环境中使用,因为它会导致应用在每次请求时重新加载代码,降低性能。

  • --host 0.0.0.0 : 监听本机上的所有网络接,比如多个网卡,如果改成 host 172.16.27.88,那只能通过这个IP地址访问,不能用别的地址访问

  • --port 8001 : 指定端口运行

image

项目部署

服务器环境安装

安装 uv

curl -LsSf https://astral.sh/uv/install.sh | sh
source ~/.local/bin/env
uv --version

创建目录:

# APP 放程序文件
# data 放数据库文件如 SQLite
# config 放配置文件,如:.env
sudo mkdir -p /opt/deploydemo/{app,data,config}
sudo chown -R $USER:$USER /opt/deploydemo
cd /opt/deploydemo

把以下2个文件上传到 /opt/deploydemo

pyproject.toml
uv.lock

安装 Python 3.12 和依赖:

uv python install 3.12
# 同步操作确保所有项目依赖项已安装并与锁文件(lockfile)保持一致:https://uv.oaix.tech/reference/cli/sync/
uv sync --frozen --no-dev --no-install-project

本地生成 .pyc 发布包

服务器运行