用 Python venv 把项目依赖管干净:比全局 pip 更稳的做法
【摘要】 用 venv 给每个 Python 项目隔离依赖,避免全局 pip 互相踩脚。文中给出创建、激活、冻结 requirements.txt,以及在华为云 ECS 上复现环境的做法。
很多人第一次用 Python 写脚本或小服务,习惯直接 pip install 装到系统环境。项目一多就容易踩坑:A 项目要 requests 2.28,B 项目要 2.31;升级一个库,另一个脚本突然报错。虚拟环境(venv)用「每个项目一套独立依赖」解决这件事,也是上云、做 CI、写 Dockerfile 前最值得养成的习惯。
为什么不要往系统 Python 里乱装包
系统自带的 Python 常被发行版工具依赖。全局装包可能:1) 覆盖系统库版本;2) 不同项目互相踩脚;3) 迁移到华为云 ECS 或容器时很难复现环境。venv 在项目目录生成隔离的解释器和 site-packages,激活后再 pip,包只进这个目录。
五分钟跑通
假设已安装 Python 3.10+。进入项目目录:
cd ~/my-app
python3 -m venv .venv
source .venv/bin/activate
pip install -U pip
pip install flask==3.0.3
pip freeze > requirements.txt
新建环境复现:
python3 -m venv .venv && source .venv/bin/activate && pip install -r requirements.txt
和华为云实践的关系
在 ECS、CodeArts 或沙箱里跑服务时,把 .venv 和 requirements.txt 一起纳入部署习惯,能减少「本机能跑、云上不行」。别把 .venv 目录提交进 Git,只提交 requirements.txt。
小结
venv 成本很低,却能把依赖冲突挡在门外。养成「一项目一环境」后,再谈 Docker 多阶段构建会顺很多。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)