必须用 python -m venv 创建虚拟环境,因其是 python 3.3+ 内置标准方案,可确保环境隔离、路径明确、工具链兼容;直接 pip install 会污染系统 python,导致版本冲突和确定性错误。

venv 不是“可选”,而是项目启动前必须执行的步骤
不创建 venv 就直接 pip install,等于把所有依赖焊死在系统 Python 上。一旦另一个项目需要 numpy==1.23.5,而你当前项目锁在 numpy==1.26.4,ImportError 或静默计算错误几乎必然发生——这不是概率问题,是路径冲突的确定性结果。
python -m venv venv 是唯一安全的创建方式
必须用 python -m venv,而不是直接调用 venv 命令(该命令在部分系统上可能指向旧版或系统级安装)。关键点:
-
python -m venv明确使用当前 shell 中的python可执行文件,避免因PATH混乱导致创建出错版本的环境 - 目录名建议固定为
venv或.venv,工具链(如 PyCharm、pre-commit、poetry)默认识别这两个名称 - 不要加
--system-site-packages:它让虚拟环境“偷看”系统包,破坏隔离性;pyvenv.cfg里include-system-site-packages = false才是干净起点
激活后仍装错包?检查 which python 和 pip 路径
常见误操作是没真正激活,或激活后误用全局 pip。验证是否生效只看两行命令输出:
SkillSub Pro - Python 题解与代码注释双功能技能功能概述SkillSub Pro - Python 题解与代码注释双功能技能是一项面向实际任务的技能,主要用于SkillSub Pro 是一个 Python 题解生成与代码注释的 双功能合体技能 ,专为学生、算法学习者和开发者设计;✅ 一个技能,两种用途 :;核心要点📝 题解模式 :输入题目/题号,自动生成完整 Python 题解(含详细注释、解题思路、复杂度分析);💬 注释模式 :输入 Python 代码,自动添加详细中。它将相关步骤、
which python which pip
两者路径都必须包含 venv/(Linux/macOS)或 venv\Scripts\(Windows)。否则:
- 在未激活状态下运行
python -m pip install,依然会装进全局site-packages - PowerShell 用户若遇到
activate.ps1 cannot be loaded,不是权限问题,是旧签名残留;删掉venv\Scripts\activate.ps1再重新创建环境即可 - IDE(如 VS Code)有时缓存旧 Python 解释器路径,需手动在命令面板中选择
Python: Select Interpreter并指向venv/bin/python
requirements.txt 不是备份,而是环境重建的契约
pip freeze > requirements.txt 导出的是当前 site-packages 的快照,但生产中它只承担一个角色:在另一台机器上重放环境。所以:
- 不要手动编辑
requirements.txt添加注释或空行——pip install -r会失败 - 开发时用
pip install -e .安装本地包,它不会出现在freeze结果里,需单独记录 -
venv目录绝不能提交到 Git;但requirements.txt必须提交,且应定期更新(尤其上线前)
真正容易被忽略的是:venv 隔离不了 C 扩展 ABI 兼容性。比如你在 macOS 上用 Python 3.11 编译的 torch,换到 Ubuntu 22.04 的 Python 3.11 环境里仍可能因 libomp 版本不匹配而段错误——这时得靠 conda 或容器补位,venv 自身无能为力。
Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!










