前言
刚开始写 python 项目时,很多人会直接执行:
pip install requests
这样虽然方便,但项目一多就容易出问题。比如 a 项目需要 requests==2.28.0,b 项目需要 requests==2.32.0,如果都装在系统 python 里,后面排查依赖冲突会很麻烦。
更推荐的方式是:每个项目单独创建一个虚拟环境。python 官方文档也提到,venv 可以创建轻量级虚拟环境,每个环境都有自己独立的 python 包目录。
venv 是什么
venv 是 python 标准库自带的虚拟环境工具,不需要额外安装第三方包。
它的作用可以简单理解为:在当前项目目录下创建一个独立的小环境。这个环境里有自己的 python 解释器入口、pip、激活脚本和依赖包目录。
项目 a 安装的包不会影响项目 b,项目 b 升级依赖也不会破坏项目 a。
创建项目目录
先创建一个演示项目:
mkdir python-venv-demo cd python-venv-demo
建议项目结构保持简单:
python-venv-demo/ ├── .venv/ ├── main.py └── requirements.txt
其中 .venv 是虚拟环境目录,main.py 是业务代码,requirements.txt 用来记录项目依赖。
创建虚拟环境
macos 或 linux 中执行:
python3 -m venv .venv
windows 中执行:
py -m venv .venv
执行完成后,项目目录下会多出一个 .venv 文件夹。这个目录一般不提交到 git 仓库,因为它可以根据 requirements.txt 重新生成。
激活虚拟环境
macos 或 linux:
source .venv/bin/activate
windows powershell:
.\.venv\scripts\activate.ps1
windows cmd:
.venv\scripts\activate.bat
激活成功后,终端前面通常会出现类似:
(.venv)
这说明当前 shell 已经进入项目虚拟环境。
安装依赖包
激活虚拟环境后,建议使用下面这种写法安装依赖:
python -m pip install requests
为什么不用裸的 pip install?因为 python -m pip 能更明确地使用当前 python 解释器对应的 pip,减少多个 python 版本共存时装错环境的问题。
安装完成后,可以写一个简单测试文件 main.py:
import requests
response = requests.get("https://httpbin.org/get", timeout=5)
print(response.status_code)
print(response.json()["url"])
运行:
python main.py
如果输出 200 和请求地址,说明依赖安装和代码运行都正常。
生成 requirements.txt
开发过程中安装过的依赖,需要记录下来,方便别人或服务器复现环境。
生成依赖文件:
python -m pip freeze > requirements.txt
查看内容:
cat requirements.txt
可能会看到类似结果:
certifi==2025.8.3 charset-normalizer==3.4.3 idna==3.10 requests==2.32.4 urllib3==2.5.0
这个文件应该提交到 git 仓库。别人拿到项目后,可以用它安装同样的依赖版本。
从 requirements.txt 安装依赖
如果换了一台电脑,或者部署到服务器,可以按下面流程重建环境:
python3 -m venv .venv source .venv/bin/activate python -m pip install -r requirements.txt
windows powershell 对应写法:
py -m venv .venv .\.venv\scripts\activate.ps1 python -m pip install -r requirements.txt
这样就不需要把 .venv 整个目录拷来拷去,只需要保留项目代码和 requirements.txt。
配置 .gitignore
虚拟环境目录不要提交到 git,建议在项目根目录创建 .gitignore:
.venv/ __pycache__/ *.pyc .env
.venv/ 可以重新创建,__pycache__/ 和 *.pyc 是 python 运行过程中生成的缓存文件,.env 通常存放本地环境变量,也不建议提交。
退出虚拟环境
如果想退出当前虚拟环境,执行:
deactivate
退出后,终端前面的 (.venv) 会消失。
常见问题
pip 安装到了系统环境。 先确认是否已经激活虚拟环境,再执行:
which python which pip
windows 中可以使用:
where python where pip
路径里如果包含 .venv,说明当前用的是项目虚拟环境。
powershell 不允许执行激活脚本。 windows 上可能遇到执行策略限制,可以临时执行:
set-executionpolicy -executionpolicy remotesigned -scope currentuser
然后重新打开 powershell,再激活虚拟环境。
requirements.txt 里依赖太多。 pip freeze 会把当前环境里所有包都写进去,包括间接依赖。小项目可以接受。如果项目复杂,可以考虑后续使用 poetry、uv 或 pip-tools 做更细的依赖管理。
推荐工作流
日常开发可以按这个顺序来:
mkdir my-project cd my-project python3 -m venv .venv source .venv/bin/activate python -m pip install requests python -m pip freeze > requirements.txt
提交代码时,提交 main.py、requirements.txt、.gitignore,不要提交 .venv。
总结
python 项目依赖管理的核心是隔离和可复现。venv 负责隔离环境,requirements.txt 负责记录依赖版本。
对于普通 python 项目,先掌握 python -m venv .venv、source .venv/bin/activate、python -m pip install -r requirements.txt 这几个命令,就已经能解决大多数本地开发和服务器部署中的依赖问题。
到此这篇关于python用 venv 和 requirements.txt 搭建隔离环境的实现的文章就介绍到这了,更多相关python venv 和 requirements.txt 搭建隔离环境内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论