正确命令是python -m venv <env_name>;激活后需验证which python和pip list,Windows用activate.bat或Activate.ps1(需策略设置),macOS/Linux用source bin/activate。

venv 模块创建虚拟环境的正确命令
Python 3.3+ 自带 venv,不用装第三方包。错用 virtualenv 命令或漏写模块名是新手最常卡住的地方。
- 必须用
python -m venv <env_name>,不是venv <env_name>(后者在没配置 PATH 时大概率报command not found) -
<env_name>推荐用小写字母+下划线,避免空格或中文,比如myproject_env;路径里含空格会导致后续激活失败 - 不要在系统 Python 的
site-packages目录下建环境,也别放在需要 sudo 权限的路径(如/usr/local),否则激活后 pip 安装会报权限错误 - Windows 上如果提示
ModuleNotFoundError: No module named 'venv',说明安装 Python 时没勾选 “Add python.exe to PATH” 或没选 “Install for all users”,重装时注意勾选
Windows 和 macOS/Linux 激活方式完全不同
激活命令不是通用的,跨平台复制粘贴必出错。关键区别在于 shell 类型和脚本位置。
- Windows PowerShell:运行
myproject_env\Scripts\Activate.ps1前要先执行Set-ExecutionPolicy RemoteSigned -Scope CurrentUser,否则被策略拦截 - Windows CMD:用
myproject_env\Scripts\activate.bat,不是.sh或.ps1 - macOS/Linux bash/zsh:用
source myproject_env/bin/activate,漏掉source就只是执行了脚本,没把环境变量加载进当前 shell - 激活后提示符开头会出现
(myproject_env),这是唯一可靠信号;光看命令没报错不等于成功
pip install 后包没生效?检查是否真在虚拟环境中
看着激活了,但 pip list 还是显示全局包,或者 import 报 ModuleNotFoundError,基本是环境没真正切入。
- 运行
which python(macOS/Linux)或where python(Windows CMD)确认 Python 路径指向虚拟环境内的bin/python或Scripts/python.exe - 检查
sys.path[0]:在 Python 交互式环境中输入import sys; print(sys.path[0]),输出应为虚拟环境路径,不是系统 Python 路径 - 常见陷阱:在 IDE(如 VS Code)里开了终端但没重启——它可能复用旧 shell,即使你手动激活过,新终端页签也不继承
- 别用
python -m pip install代替pip install,二者在虚拟环境中行为一致;但如果你没激活,python -m pip仍走系统 pip,容易误判
删除虚拟环境就是删文件夹,但要注意残留
虚拟环境本质是独立目录,删它不需要特殊命令,但直接 rm -rf 或拖进废纸篓前得收尾干净。
立即学习“Python免费学习笔记(深入)”;
- 先退出激活状态:运行
deactivate(无论是否成功,都执行一次),避免当前 shell 还挂着旧环境变量 - 删之前确认路径:
echo $VIRTUAL_ENV(macOS/Linux)或echo %VIRTUAL_ENV%(Windows)能快速定位当前激活的是哪个环境 - 删完再开新终端,
pip list应只显示默认包(如 pip、setuptools),若还看到之前装的包,说明删错了目录,或者有另一个同名环境存在 - PyCharm 等 IDE 可能缓存解释器路径,删完要进 Settings → Project → Python Interpreter 切换或重新配置,否则编辑器里 import 仍能通过,但终端运行就失败
which python 和 pip list,比反复重装快得多。











