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

推荐订阅源

H
Hackread – Cybersecurity News, Data Breaches, AI and More
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
V
V2EX
T
The Blog of Author Tim Ferriss
腾讯CDC
Hugging Face - Blog
Hugging Face - Blog
雷峰网
雷峰网
爱范儿
爱范儿
GbyAI
GbyAI
H
Help Net Security
I
InfoQ
罗磊的独立博客
酷 壳 – CoolShell
酷 壳 – CoolShell
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
人人都是产品经理
人人都是产品经理
J
Java Code Geeks
Microsoft Security Blog
Microsoft Security Blog
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
N
Netflix TechBlog - Medium
Last Week in AI
Last Week in AI
宝玉的分享
宝玉的分享
云风的 BLOG
云风的 BLOG
Project Zero
Project Zero
P
Privacy & Cybersecurity Law Blog
A
Arctic Wolf
Know Your Adversary
Know Your Adversary
G
Google Developers Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
T
Tor Project blog
V
Vulnerabilities – Threatpost
Y
Y Combinator Blog
WordPress大学
WordPress大学
V
Visual Studio Blog
博客园_首页
G
GRAHAM CLULEY
K
Kaspersky official blog
T
Tailwind CSS Blog
T
Threat Research - Cisco Blogs
博客园 - Franky
D
Docker
Security Latest
Security Latest
I
Intezer
有赞技术团队
有赞技术团队
Application and Cybersecurity Blog
Application and Cybersecurity Blog
博客园 - 【当耐特】
B
Blog RSS Feed
T
The Exploit Database - CXSecurity.com
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻

博客园 - VipSoft

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 — 文本生成应用 Dify — 聊天助手 -- 知识库 Windows 下 Docker 安装 Dify Ollama — 命令 Ollama — 为什么能够运行不同的模型 Ollama — 接口 Qwen — 自定义模型文件 Ollama Qwen — 安装测试 Ollama Windows 安装 & 指定安装目录 跟着AI学AI - 诊断结论信息抽取 - 批量处理脚本 跟着AI学AI - 诊断结论信息抽取 - 模型压缩与部署 跟着AI学AI - 诊断结论信息抽取 - 模型评估与调试 跟着AI学AI - 诊断结论信息抽取 - 模型训练 轻型民用无人驾驶航空器安全操控理论考试培训材料 FreeRedis Helper Windbg w3wp.DMP 内存分析 跟着AI学AI - 诊断结论信息抽取 - 数据增强 QQ 录屏软件 Java - 加权随机算法 - 示例 Java - 加权随机算法--Demo Java LoadBalanceUtil 负载均衡、轮询加权 SpringBoot 集成 IP2Region 获取IP地域信息 Windows 服务器和虚拟主机,创建.开头的文件夹 .well-known 跟着AI学AI - 诊断结论信息抽取 - 数据格式转换BERT训练格式 跟着AI学AI - 诊断结论信息抽取 - LabelStudio 标注 -- 结论标注 跟着AI学AI - 诊断结论信息抽取 - 学习路径 跟着AI学AI - UV 安装 数据标注工具 Label-Studio `VIRTUAL_ENV=venv` does not match the project environment 跟着AI学AI - 学习路径 - 命名实体识别(NER)和信息抽取(IE) 跟着AI学AI - 需要购买显卡吗? C# 无BOM的UTF-8编码 Vue ref reactive Vue - el-table 嵌套表 Spring `@Scheduled` 中这些参数的区别、组合和应用场景 Python 找出同步日志中的重复数据 Python - UV PyCharm 不能识别 .venv 的环境
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 发布包

服务器运行