虚拟环境为何重要
了解依赖冲突,以及隔离环境为何必不可少。
虚拟环境为何重要 是 CoddyKit 上的免费 Python Academy 课时。 这是第 1 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Python Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Python Academy 课程共包含 4 节课。
简介
没有虚拟环境时,所有 Python 包都会全局安装,导致不同项目之间发生版本冲突。
全局安装问题
默认情况下,pip 会安装到系统 Python 中。项目 A 需要 requests 2.25,项目 B 需要 2.28——发生冲突!
# Without venv:
# pip install requests==2.25 -> global
# pip install requests==2.28 -> overwrites 2.25!
print('global conflict demo')什么是虚拟环境?
venv 是目录中的隔离式 Python 安装。每个项目都有自己的包,彼此独立。
# venv creates:
# project/
# .venv/
# bin/python (isolated Python)
# lib/site-packages/ (project packages)
print('venv structure')可复现性
使用 venv 和 requirements.txt,任何人都可以重新创建完全相同的环境:pip install -r requirements.txt
# pip freeze > requirements.txt
# # Later, on another machine:
# python -m venv .venv
# pip install -r requirements.txt
print('reproducible env')安全隔离
在 venv 中安装包不会影响系统 Python。不需要 sudo 或管理员权限,也不会有破坏系统工具的风险。
# System Python is untouched:
# /usr/bin/python -> system packages
# .venv/bin/python -> project packages only
print('security isolation')CI/CD 与 Docker
在 CI/CD 和容器中,为每次构建创建全新的 venv,以确保环境干净且可复现。
# Dockerfile pattern:
# RUN python -m venv /opt/venv
# RUN /opt/venv/bin/pip install -r requirements.txt
print('ci/cd demo')每个项目使用一个 venv
每个项目保留一个 venv,将其存储在项目根目录中的 .venv/ 内。切勿将其提交到版本控制系统。
# Add to .gitignore:
# .venv/
# __pycache__/
print('gitignore tip')系统级、用户级与 venv 的 site-packages
Python 会按以下顺序查找包:venv site-packages → 用户 site → 全局 site。激活后,venv 的优先级最高。
import sys
print('\n'.join(p for p in sys.path if 'site' in p))使用 pyenv 管理 Python 版本
pyenv 可以管理多个 Python 版本(3.10、3.11、3.12)。将它与 venv 结合使用即可实现完全隔离。
# pyenv install 3.12.0
# pyenv local 3.12.0
# python -m venv .venv
print('pyenv demo')作为替代方案的 conda
conda(Anaconda/Miniconda)可以同时管理包和 Python 版本,在数据科学领域很受欢迎。
# conda create -n myenv python=3.11
# conda activate myenv
# conda install numpy pandas
print('conda demo')最佳实践总结
始终在 venv 中工作。使用 requirements.txt 或 pyproject.toml。将 .venv/ 添加到 .gitignore 中。使用一致的 Python 版本。
import sys
print('Python:', sys.version)
print('venv:', sys.prefix != sys.base_prefix)快速检查
虚拟环境主要解决什么问题?
回顾
虚拟环境:每个项目独立隔离。每个 venv 都有自己的包。使用 requirements.txt 实现可复现性。将 .venv/ 添加到 .gitignore 中。
继续学习
请继续努力!进入下一课。
常见问题解答
「虚拟环境为何重要」课时是免费的吗?
是的 — 「虚拟环境为何重要」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Python Academy 课程的其余内容,请升级到 CoddyKit PRO。 Python Academy 课程共包含 4 节课。
「虚拟环境为何重要」这节课中我会学到什么?
了解依赖冲突,以及隔离环境为何必不可少。 你通过在浏览器中直接运行的动手代码来练习 Python Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Python Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Python Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 4 节。
「虚拟环境为何重要」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Python Academy 课中编写并运行代码吗?
能。每节 Python Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。