workon 是 Python 虚拟环境管理工具 virtualenvwrapper 里面的核心命令,workon 后面直接填写已经创建好的虚拟环境名称,作用是切换激活对应的虚拟环境,执行这条命令之后,终端提示符前面就会显示当前虚拟环境名字,后续安装包 运行 python 解释器都会在这个环境里面执行,不会污染系统全局 Python 环境。很多新手容易混淆,workon 后面不是填写项目路径,也不是填写 python 版本号,只能填写之前用 mkvirtualenv 创建出来的环境名称,如果填写错误名称,终端会直接报错提示环境不存在,这套命令依赖 virtualenvwrapper 插件,windows mac linux 三个系统安装配置方式不一样,环境名称区分大小写,同一个名字不能重复创建,深度使用的时候还要掌握列出全部环境 退出环境 新建环境 删除环境配套命令,理解多项目并行开发的时候,用 workon 快速在多个虚拟环境之间来回切换的工作流,解决多项目依赖版本冲突,比如一个项目需要 django2,另一个项目需要 django4,就可以分别建独立环境,用 workon 随时切换。
一 基础语法格式
workon 虚拟环境名称
示例
workon myenv
workon project_django
workon test310
执行成功之后,终端前面会变成类似 (myenv) C:> 这种标识,代表已经成功激活该虚拟环境
二 前置条件说明
workon 命令不是 Python 自带原生命令,必须提前安装 virtualenvwrapper
windows 系统对应的包名是 virtualenvwrapper win,mac linux 是 virtualenvwrapper
安装完成之后,还需要配置环境变量,终端才能识别 workon 这个指令,如果终端提示 workon 不是内部或者外部命令,就是插件没有安装或者环境变量没有配置成功
三 配套常用命令清单
| 命令 | 作用 | 说明 |
|---|---|---|
| workon | 切换激活虚拟环境 | 后面接环境名称 |
| workon 不带参数 | 列出全部已有虚拟环境 | 直接输入 workon 回车,打印所有环境名字 |
| mkvirtualenv 名称 | 新建虚拟环境 | 创建之后才可以用 workon 激活 |
| deactivate | 退出当前虚拟环境 | 不需要加环境名 |
| rmvirtualenv 名称 | 删除虚拟环境 | 后面接环境名称 |
| lsvirtualenv | 列出全部虚拟环境 | 和 workon 不带参数效果接近 |
四 进阶使用要点
第一 环境名称区分大小写,Workon MyEnv 和 myenv 是两个不同环境,输入的时候要保持和创建时名称完全一致
第二 切换环境不需要先执行 deactivate 退出旧环境,直接执行 workon 新环境名称,系统会自动切换,这个是 workon 很大的优势,比原生 virtualenv 切换更省事
第三 新建环境的时候可以指定 python 版本,mkvirtualenv -p python3.10 env310,创建完成之后,workon env310 就可以进入这个 python3.10 环境
第四 多项目开发推荐每个项目单独独立虚拟环境,命名带上项目名和 python 版本,方便后续 workon 识别,比如 flask_py39
五 常见报错排查
报错 1 workon 不是内部或外部命令
原因 virtualenvwrapper 没有安装,或者环境变量没有配置,windows 需要运行 bat 初始化脚本,mac linux 需要写入 bashrc 或者 zshrc 配置文件
报错 2 workon 后填写名称提示环境不存在
原因 环境名字拼写错误,大小写错误,或者这个虚拟环境从来没有用 mkvirtualenv 创建过,可以直接输入 workon 回车,查看当前所有可用环境名称,对照修正
报错 3 切换之后 pip 安装包还是装到全局环境
原因 切换没有成功,检查终端提示符前面有没有虚拟环境标识,确认 workon 执行成功,再执行 pip 安装命令
【常见问题】
问题 1 workon 后加什么可以直接写项目文件夹路径吗
回答 1 workon 后加什么不能填写项目文件夹路径,workon 后面只能填写虚拟环境名称,项目路径和虚拟环境是两个概念,不要混淆,正确执行 workon 后加什么的操作就是填写 mkvirtualenv 创建的环境名字。
问题 2 workon 后加什么不带参数是什么效果
回答 2 workon 后加什么如果后面不写任何环境名称,直接回车,就会列出当前机器全部已经创建好的虚拟环境,用来查看有哪些环境可以切换,是查询环境列表,不是激活环境,了解 workon 后加什么可以辅助核对正确环境名。
问题 3 workon 后加什么切换新环境需要先 deactivate 吗
回答 3 workon 后加什么切换新环境的时候,不需要提前执行 deactivate 退出旧环境,直接 workon 填写新环境名称,工具会自动完成切换,这是 workon 后加什么命令的便利特性。
问题 4 workon 后加什么提示环境不存在怎么处理
回答 4 workon 后加什么提示环境不存在,优先输入 workon 回车查看全部环境名称,核对拼写和大小写,如果确实没有这个环境,需要先用 mkvirtualenv 创建,之后才可以 workon 后加什么完成激活。
【免责申明】
本文内容基于 virtualenvwrapper 工具常规用法编写,不同操作系统 shell 类型 工具版本参数会存在差异,部分新版 Python 开发方案已经改用 venv poetry conda 等方案,本文仅作为命令学习参考,不替代官方文档。


