推荐用 python -m venv 创建虚拟环境,因其是Python 3.3+内置模块、标准轻量;virtualenv是第三方包,仅旧项目或需特定功能时使用;Git中应将venv/而非venv加入.gitignore;激活后须执行which pip验证路径。

直接用 python -m venv 创建,别碰 virtualenv 或 conda——除非你明确需要它们的额外能力。
为什么不用 virtualenv 而用 venv
venv 是 Python 3.3+ 内置模块,标准、轻量、无额外依赖。而 virtualenv 是第三方包,旧项目或 Python virtualenv 反而容易混淆命令(比如误用 virtualenv 命令而非 python -m venv),还可能因版本不兼容导致 pip 在激活后不可用。
- Python 3.3 及以上:只用
python -m venv - 确认版本:
python --version,不是python3 --version(某些系统里两者指向不同解释器) - Windows 上若提示
ModuleNotFoundError: No module named 'venv',说明安装时没勾选 “Add python.exe to PATH” 或没装 “py launcher”,重装 Python 并勾选“Add Python to environment variables”
venv 创建时路径和命名的硬规则
虚拟环境目录名不能含空格、中文或点号开头(如 .venv 在部分 shell 下会出问题),且不能与项目已有文件同名(否则会被覆盖)。
- 推荐命名:
venv(小写、无点、无下划线),放在项目根目录下 - 错误示例:
my project/venv(含空格)、./.venv(点开头,Git 默认忽略,IDE 可能识别失败)、venv/(末尾斜杠易引发路径拼接错误) - 创建命令必须带目标路径:
python -m venv venv,不能只写python -m venv - Linux/macOS 下若用
python3 -m venv venv,确保python3指向的是你期望的版本(which python3查看)
激活后 pip 还装到全局?三步定位
激活成功但 pip install 仍写入系统 site-packages,基本是环境没真正激活,或 shell 缓存了旧的 pip 路径。
SkillSub Pro - Python 题解与代码注释双功能技能功能概述SkillSub Pro - Python 题解与代码注释双功能技能是一项面向实际任务的技能,主要用于SkillSub Pro 是一个 Python 题解生成与代码注释的 双功能合体技能 ,专为学生、算法学习者和开发者设计;✅ 一个技能,两种用途 :;核心要点📝 题解模式 :输入题目/题号,自动生成完整 Python 题解(含详细注释、解题思路、复杂度分析);💬 注释模式 :输入 Python 代码,自动添加详细中。它将相关步骤、
立即学习“Python免费学习笔记(深入)”;
- 先验证:
which pip(macOS/Linux)或where pip(Windows),输出应含venv路径,如/path/to/project/venv/bin/pip - Windows PowerShell 默认禁用脚本执行,运行
venv\Scripts\Activate.ps1会报错,改用venv\Scripts\activate.bat,或临时允许脚本:Set-ExecutionPolicy RemoteSigned -Scope CurrentUser - Shell 切换后未重新激活:新开终端不会自动激活,每次都要手动运行
source venv/bin/activate(macOS/Linux)或venv\Scripts\activate(Windows cmd)
删除虚拟环境就是删文件夹,但要注意这俩时机
删 venv 文件夹本身没问题,但得在没激活状态下删,且删前确认当前终端没在该环境里运行任何进程(比如后台挂着的 flask run)。
- 不要在激活状态下删:
rm -rf venv可能删掉当前 shell 正在读取的 bin/activate,导致终端命令异常 - 删完别急着重建:检查
requirements.txt是否最新,用pip freeze > requirements.txt备份后再删更稳妥 - Git 项目中记得把
venv/加进.gitignore,但别加成venv(少斜杠)——后者会误匹配venv.py等文件
最常被跳过的其实是激活后的路径验证,很多人看到命令行前缀变了就以为成了,结果 pip list 还是满屏全局包。多敲一次 which pip,省掉半小时排查。


















