3分钟搞定Python虚拟环境和FastAPI安装,告别依赖地狱

42 阅读5分钟

3分钟搞定Python虚拟环境和FastAPI安装,告别依赖地狱

你是否曾经历过这种绝望:明明昨天还能跑的项目,今天装了个新包就全崩了?

“你的FastAPI项目依赖Pydantic 2.0,你的AI模型依赖Pydantic 1.0,系统只能装一个,你选谁?”

这不是一道选择题,而是一道送命题。但今天我要告诉你,有一种工具,能让这两个“死对头”在你的电脑里和平共处,各用各的版本,互不打扰。

这就是Python虚拟环境——一个让你告别依赖地狱的救星。

为什么你的Python项目总“打架”?

设想一下,你电脑的Python环境就像一个大厨房,所有项目都在这里做饭:

  1. 你的FastAPI项目是个西餐大厨,需要最新、最精准的调料(依赖包)
  2. 你的AI项目是个中餐师傅,用的调料配方是祖传秘方(特定版本)
  3. 你的物联网项目想做日料,需要的又是另一套调味品

如果,所有人都挤在同一个厨房,会发生什么?

调料瓶被混用,配方全乱了。结果就是——每道菜都做不对味

这就是你遇到的“依赖冲突”:

ERROR: Cannot install package-a==2.0 and package-b==1.5
because these package versions have conflicting dependencies.

更致命的是,系统级的Python环境一旦被污染,修复的代价往往更惨重。

解决方案:给每个项目一个“独立厨房”

Python 虚拟环境的本质,就是为每个项目建立一个专属的、隔离的运行环境

具体来说:

  1. FastAPI项目 在它的“西餐厨房”里,有Pydantic 2.0、uvicorn 0.20等全套西餐调料
  2. AI项目 在它的“中餐厨房”里,有Pydantic 1.0、PyTorch 2.0等中餐秘方
  3. 物联网项目 在它的“日料厨房”里,又有完全不同的另一套依赖组合

关键优势

  1. 版本自由:项目A用Django 4.0,项目B用Django 3.2,互不影响
  2. 环境纯净:每个项目从零开始搭建,没有历史包袱
  3. 部署一致:本地开发环境与生产服务器环境可以做到完全一致
  4. 一键移植:用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开发 #程序员 #编程教程 #效率提升