3分钟搞定Python虚拟环境和FastAPI安装,告别依赖地狱
你是否曾经历过这种绝望:明明昨天还能跑的项目,今天装了个新包就全崩了?
“你的FastAPI项目依赖Pydantic 2.0,你的AI模型依赖Pydantic 1.0,系统只能装一个,你选谁?”
这不是一道选择题,而是一道送命题。但今天我要告诉你,有一种工具,能让这两个“死对头”在你的电脑里和平共处,各用各的版本,互不打扰。
这就是Python虚拟环境——一个让你告别依赖地狱的救星。
为什么你的Python项目总“打架”?
设想一下,你电脑的Python环境就像一个大厨房,所有项目都在这里做饭:
- 你的FastAPI项目是个西餐大厨,需要最新、最精准的调料(依赖包)
- 你的AI项目是个中餐师傅,用的调料配方是祖传秘方(特定版本)
- 你的物联网项目想做日料,需要的又是另一套调味品
如果,所有人都挤在同一个厨房,会发生什么?
调料瓶被混用,配方全乱了。结果就是——每道菜都做不对味。
这就是你遇到的“依赖冲突”:
ERROR: Cannot install package-a==2.0 and package-b==1.5
because these package versions have conflicting dependencies.
更致命的是,系统级的Python环境一旦被污染,修复的代价往往更惨重。
解决方案:给每个项目一个“独立厨房”
Python 虚拟环境的本质,就是为每个项目建立一个专属的、隔离的运行环境。
具体来说:
- FastAPI项目 在它的“西餐厨房”里,有Pydantic 2.0、uvicorn 0.20等全套西餐调料
- AI项目 在它的“中餐厨房”里,有Pydantic 1.0、PyTorch 2.0等中餐秘方
- 物联网项目 在它的“日料厨房”里,又有完全不同的另一套依赖组合
关键优势:
- 版本自由:项目A用Django 4.0,项目B用Django 3.2,互不影响
- 环境纯净:每个项目从零开始搭建,没有历史包袱
- 部署一致:本地开发环境与生产服务器环境可以做到完全一致
- 一键移植:用
requirements.txt清单,能完整复制整个环境
实战:3分钟搞定FastAPI环境
接下来,我们一步步为FastAPI项目搭建专属厨房。
1、创建项目目录
在终端中执行以下命令,创建一个名为 fastapi_proj的项目文件夹并进入。
mkdir fastapi_proj
cd fastapi_proj
2、创建 Python 虚拟环境
使用Python内置的 venv 模块创建虚拟环境。这里的 .venv是环境文件夹的名字,也可以自定义。
python3 -m venv .venv
执行后,当前目录下会生成一个 .venv文件夹,它就是你的“独立厨房”。它将包含我们这个 FastAPI 应用程序的所有依赖项。
这个步骤需要执行几秒钟,一般是 1~3 秒即可。
3、激活虚拟环境
创建后需激活才能使用。激活后,命令提示符前会出现 (.venv)标识。
source .venv/bin/activate
激活成功后,你的所有Python和pip操作都将只影响当前虚拟环境,与全局无关。
4、安装FastAPI及相关依赖
激活环境后,开始安装依赖。
安装 FastAPI:
pip install fastapi -i https://pypi.tuna.tsinghua.edu.cn/simple/
安装 Uvicorn(服务器)
pip install "uvicorn[standard]" -i https://pypi.tuna.tsinghua.edu.cn/simple/
生产环境推荐安装 uvicorn 标准版,以获得最佳性能。
5、验证安装
使用 pip list命令,检查包是否成功安装到虚拟环境中。
(venv) bogon:fastapi_proj wt$ pip list
Package Version
----------------- -------
annotated-doc 0.0.4
annotated-types 0.7.0
anyio 4.11.0
fastapi 0.121.2
idna 3.11
pip 24.3.1
pydantic 2.12.4
pydantic_core 2.41.5
sniffio 1.3.1
starlette 0.49.3
typing_extensions 4.15.0
typing-inspection 0.4.2
6、退出虚拟环境
工作完成后,使用 deactivate命令退出。
deactivate
退出后,终端提示符前的 (.venv)会消失,意味着你回到了全局环境。
最佳实践
1、推荐使用国内的镜像源,否则安装过程会非常缓慢且容易失败。
2、uvicorn[standard] 中的[standard]表示“额外依赖组”,它会安装包括 uvloop等在内的性能优化依赖,强烈推荐用于生产环境。
3、在安装任何包之前,务必确认终端提示符前有 (.venv)标识,否则包会装到全局,造成混乱。
4、将 .venv/添加到 .gitignore文件中,不要将虚拟环境提交到代码仓库。
扩展
1、为解决国内网络环境慢的问题,我强烈建议使用国内镜像源。
如果,我们使用 `pip install fastapi` 来安装依赖包。经常会出现下面这个异常:
pip._vendor.urllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool(host='files.pythonhosted.org', port=443): Read timed out.
这是因为,pip 默认所使用的镜像地址是国外的,而我们是在国内的网络环境下。那么,出现 ReadTimeoutError 异常是非常常见的。不用着急,既然知道了原因,解决起来也就很方便了。
我们可以指定 pip 使用国内的镜像源地址,就可以解决这个网络环境的问题了。指定镜像源地址的方式有两种:
一种,是在命令行使用 pip 命令的 "-i" 参数显示指定一个。临时生效。
# 使用清华镜像源
pip install fastapi -i https://pypi.tuna.tsinghua.edu.cn/simple
# 或 使用阿里云镜像源
pip install fastapi -i https://mirrors.aliyun.com/pypi/simple/
# 或 使用豆瓣镜像源
pip install fastapi -i https://pypi.douban.com/simple/
另一种,是修改 pip 的配置文件。永久生效。
在 macOS 环境下,pip 的配置文件通常位于 ~/.pip/pip.conf或 ~/.config/pip/pip.conf
我推荐使用 `pip install fastapi -i https://pypi.tuna.tsinghua.edu.cn/simple` 来安装依赖包。
2、pip install "uvicorn[standard]" 的核心优势在哪?
核心区别:
pip install uvicorn
只安装 uvicorn 的最核心、最基础的功能
体积小,依赖少
但性能不是最优的
pip install "uvicorn[standard]"
安装 uvicorn 核心功能 + 性能优化依赖包
体积稍大,但性能显著提升
推荐用于生产环境
-------- 写在最后 --------
希望这篇教程能让你感受到 Python 虚拟环境的魅力!对 Python 虚拟环境有一个全面的了解。
点赞 :如果觉得有收获,点个赞支持一下吧!
分享 :分享给身边同样对数据分析和Python感兴趣的朋友!
关注 :不错过每一篇 Python 实战干货!
每周更新 Python 自动化办公、Web 开发、算法等硬核技巧,助你成为 10 倍效率的开发者!
#Python #FastAPI #API #Web开发 #程序员 #编程教程 #效率提升