如何快速切换virtualenvwrapper虚拟环境?能否用唯一ID简化workon操作?
如何快速切换virtualenvwrapper虚拟环境及进阶快捷技巧
一、基础快速切换方法
其实virtualenvwrapper本身就自带了不少省心的快捷操作,最核心的就是workon命令:
- 直接输入
workon不带任何参数,会立刻列出所有已创建的虚拟环境,一目了然 - 要切换到目标环境,直接输入
workon <环境名>就行,比如workon django_dev - 更偷懒的技巧是Tab自动补全:输入环境名的前几个字符(比如
workon dj),按下Tab键,系统会自动补全唯一匹配的环境名,完全不用手动敲完整名称
二、用编号快速切换的进阶方案
virtualenvwrapper默认没有编号切换的功能,但我们可以自己写个小函数实现这个需求,步骤超简单:
- 打开你的shell配置文件(bash用户找
~/.bashrc,zsh用户找~/.zshrc) - 把以下代码粘贴进去:
workon-id() { # 获取所有虚拟环境列表 envs=($(ls -1 $WORKON_HOME)) if [ $# -eq 0 ]; then # 不传参数时,列出带编号的环境 for i in "${!envs[@]}"; do echo "$((i+1)). ${envs[$i]}" done else # 根据传入的编号切换环境 idx=$(( $1 - 1 )) if [ $idx -ge 0 ] && [ $idx -lt ${#envs[@]} ]; then workon "${envs[$idx]}" else echo "无效编号!可用编号范围是1到 ${#envs[@]}" fi fi }
- 保存文件后,执行
source ~/.bashrc(或对应的配置文件)让改动生效
现在你就能用编号爽歪歪操作了:
- 输入
workon-id,会列出所有环境带编号:1. django_dev 2. flask_api 3. data_analysis - 输入
workon-id 2,直接秒切到第二个环境flask_api
这个函数逻辑很直白:先读取virtualenvwrapper存放环境的目录(WORKON_HOME)下的所有环境,编号展示;传编号就切换对应环境,完美解决记不住长环境名的痛点!
内容的提问来源于stack exchange,提问作者konichiwa
相关产品推荐
相关产品推荐

