news 2026/6/1 17:23:34

【Python】基础语法入门(十九)——虚拟环境与依赖管理:打造干净、可复现的开发环境

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【Python】基础语法入门(十九)——虚拟环境与依赖管理:打造干净、可复现的开发环境


🧪说明:随着项目增多,你是否遇到过这些问题?

  • 项目 A 需要requests==2.25,项目 B 需要requests==2.30
  • 在同事电脑上能跑,自己电脑却报错
  • 不小心用pip install污染了系统 Python

本篇将教你使用虚拟环境(Virtual Environment)依赖管理工具,彻底解决上述问题,实现:

  • ✅ 项目间依赖隔离
  • ✅ 环境一键复现
  • ✅ 安全安装第三方包

这是专业 Python 开发的第一步


1. 为什么需要虚拟环境?

❌ 全局安装的问题

# 直接安装到系统 Pythonpipinstallflask==2.0pipinstallsome-old-tool# 它要求 flask<2.0 → 冲突!

后果:

  • 包版本冲突
  • 卸载困难
  • 项目无法迁移

✅ 虚拟环境的作用

  • 为每个项目创建独立的 Python 环境
  • 包安装在项目专属目录,不影响全局
  • 可指定 Python 版本(配合pyenv

📦类比
虚拟环境 ≈ 手机上的“应用沙盒”——每个 App 有自己的空间,互不干扰。


2. 创建与使用虚拟环境(标准方法)

Python 3.3+ 内置venv模块,无需额外安装。

步骤 1:创建虚拟环境

# 进入项目目录cdmy_project# 创建名为 venv 的虚拟环境(推荐名称)python -m venv venv

💡 生成目录结构:

venv/ ├── bin/ # Linux/Mac(Windows 为 Scripts/) │ ├── python │ └── pip ├── lib/ └── pyvenv.cfg

步骤 2:激活虚拟环境

系统命令
Windows (CMD)venv\Scripts\activate
Windows (PowerShell)venv\Scripts\Activate.ps1(需先执行Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
macOS / Linuxsource venv/bin/activate

✅ 激活后,命令行提示符通常会显示(venv)

(venv)$whichpython /path/to/my_project/venv/bin/python

步骤 3:在虚拟环境中工作

(venv)$ pipinstallrequests flask(venv)$ python app.py

🔑 此时所有pip安装的包都只存在于venv/目录中。

步骤 4:退出虚拟环境

(venv)$ deactivate $# 提示符恢复正常

3. 依赖管理:requirements.txt

记录项目所需的所有包及其版本,实现环境复现

生成依赖文件

(venv)$ pip freeze>requirements.txt

requirements.txt内容示例:

Flask==2.3.2 requests==2.31.0 Werkzeug==2.3.6

在新环境安装依赖

# 创建并激活新虚拟环境python -m venv new_venvsourcenew_venv/bin/activate# Linux/Mac# 安装所有依赖pipinstall-r requirements.txt

✅ 现在新环境与原环境完全一致


4. 最佳实践与技巧

✅ 项目结构推荐

my_project/ ├── venv/ ← 虚拟环境(**不要提交到 Git**) ├── src/ ← 源代码 │ └── app.py ├── requirements.txt ← 依赖清单(**必须提交**) ├── .gitignore ← 忽略 venv/ └── README.md

.gitignore内容

# 忽略虚拟环境 venv/ env/ ENV/ # 忽略 Python 缓存 __pycache__/ *.pyc

区分开发与生产依赖(进阶)

# requirements.txt —— 生产依赖flask==2.3.2# requirements-dev.txt —— 开发依赖(测试、格式化等)-r requirements.txt# 继承生产依赖pytest==7.4.0black==23.7.0

安装开发依赖:

pipinstall-r requirements-dev.txt

5. 常见问题解答

❓ Q1:虚拟环境可以移动或重命名吗?

⚠️不建议。路径硬编码在venv/pyvenv.cfg中。
✅ 正确做法:删除旧环境,用requirements.txt重建。

❓ Q2:如何指定 Python 版本?

# 使用特定 Python 解释器创建环境python3.9 -m venv venv

💡 若需管理多个 Python 版本,推荐工具:pyenv(macOS/Linux)或pyenv-win(Windows)。

❓ Q3:Jupyter Notebook 如何使用虚拟环境?

(venv)$ pipinstallipykernel(venv)$ python -m ipykernelinstall--user --name=my_project_env

然后在 Notebook 的Kernel → Change Kernel中选择my_project_env


6. 现代替代方案简介(了解即可)

虽然venv+pip是标准组合,但以下工具提供更高级功能:

工具特点
Poetry一体化管理依赖、虚拟环境、打包发布
Pipenv结合pipvirtualenv,自动生成Pipfile
Conda跨语言环境管理(常用于数据科学)

📌初学者建议:先掌握venv+requirements.txt,再探索高级工具。


7. 总结:虚拟环境工作流

  1. 新建项目mkdir project && cd project
  2. 创建环境python -m venv venv
  3. 激活环境source venv/bin/activate(Linux/Mac)
  4. 安装包pip install flask
  5. 保存依赖pip freeze > requirements.txt
  6. 提交代码git add . && git commit -m "Initial commit"
  7. 换电脑/协作git clone ...python -m venv venvpip install -r requirements.txt

🔒黄金法则
“永远不在全局 Python 中安装项目依赖!”


下一步行动

  1. 为你的 To-Do List 项目创建虚拟环境
  2. 生成requirements.txt并提交到 Git
  3. 在另一台电脑(或新目录)克隆项目,验证能否一键复现环境

🐍良好的环境管理习惯,是专业开发者的第一块基石。
从今天起,告别“在我机器上能跑”的尴尬!

继续前行,构建可信赖的 Python 项目!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/29 17:31:45

2026年智能汽车与机械工程国际学术会议(IVME 2026)

2026年智能汽车与机械工程国际学术会议&#xff08;IVME 2026&#xff09;将于2026年2月6-8日在中国青岛隆重召开。会议旨在搭建智能汽车与机械工程领域的国际学术交流平台&#xff0c;汇聚来自全球顶尖专家、学者和工业领军人士&#xff0c;共同探讨智能驾驶、车载智能系统、新…

作者头像 李华
网站建设 2026/5/29 0:28:53

vue和springboot框架开发的攻防靶场实验室平台的设计与实现_xd0oo5dg

文章目录 具体实现截图主要技术与实现手段关于我本系统开发思路java类核心代码部分展示结论源码lw获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01; 具体实现截图 同行可拿货,招校园代理 vuesprivuespringboot_xd0oo5dg 框架开发的攻防靶场…

作者头像 李华
网站建设 2026/5/31 20:07:11

vue和springboot框架开发的河南特色美食分享系统_73d424e6

文章目录具体实现截图主要技术与实现手段关于我本系统开发思路java类核心代码部分展示结论源码lw获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;具体实现截图 同行可拿货,招校园代理 vuesprivuespringboot_73d424e6 框架开发的河南特色美…

作者头像 李华
网站建设 2026/5/30 1:50:23

vue和springboot框架开发的滑雪场售票系统设计与实现_4rney874

文章目录具体实现截图主要技术与实现手段关于我本系统开发思路java类核心代码部分展示结论源码lw获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;具体实现截图 同行可拿货,招校园代理 vuespringboot_4rney874 框架开发的滑雪场售票系统设计…

作者头像 李华
网站建设 2026/5/29 2:33:39

【计算机毕业设计案例】基于SpringBoot的电影购票平台微信小程序基于springboot+微信小程序的影院售票系统设计与实现(程序+文档+讲解+定制)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/6/1 1:57:07

【计算机毕业设计案例】小程序毕设项目推荐-基于微信小程序的学生宿舍管理系统基于springboot+微信小程序的高校学生公寓道闸管理平台的设计与实现【附源码+文档,调试定制服(程序+文档+讲解+定制)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华