notes/config/python/venv/venv.sh

92 lines
2.2 KiB
Bash
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
ROOT_UID=0
if [[ $ROOT_UID -eq $UID ]]; then
echo "不建议使用 root 账户运行脚本, nothing done"
return
fi
# 设置 venv 的目录
VENV_HOME=$HOME/.venv/
if [[ -d $VENV_HOME ]]; then
mv $VENV_HOME $HOME/.venv-bak/
else
mkdir $VENV_HOME
fi
# mkvenv 创建虚拟环境并激活,接收一个命令行参数指定虚拟环境名称,多余的参数忽略
# 使用样例mkvenv venv_name
function mkvenv() {
venv_name=$1
if [[ -d $VENV_HOME/$venv_name ]]; then
echo "$VENV_HOME/$venv_name 已存在, nothing done"
return
else
mkdir $VENV_HOME/$venv_name
fi
python -m venv $VENV_HOME/$venv_name
source $VENV_HOME/$venv_name/bin/activate
}
# lsvenv 列出已安装的虚拟环境,传入的命令行参数会忽略
# 使用样例lsvenv
function lsvenv() {
if [[ ! -d $VENV_HOME ]]; then
echo "未找到虚拟环境, nothing done"
return
fi
ls -lh $VENV_HOME
}
# 删除指定的虚拟环境,接收一个命令行参数指定虚拟环境名称,多余的参数忽略
# 使用样例rmvenv venv_name
function rmvenv() {
if [[ $# -le 0 ]]; then
echo "需要指明要删除的虚拟环境名称, nothing done"
return
fi
venv_name=$1
if [[ ! -d $VENV_HOME/$venv_name ]]; then
echo "要删除的虚拟环境不存在, nothing done"
return
fi
rm -rf $VENV_HOME/$venv_name
}
# 激活虚拟环境,不传入命令行参数时,会列出所有虚拟环境;
# 传入一个命令行参数指定要激活的虚拟环境,多余的参数忽略
# 使用样例workon
# workon venv_name
function workon() {
# 如果没有给参数,则列出所有虚拟环境
if [[ $# -le 0 ]]; then
lsvenv
return
fi
venv_name=$1
if [[ ! -d $VENV_HOME/$venv_name ]]; then
echo "要激活的虚拟环境不存在, nothing done"
return
fi
source $VENV_HOME/$venv_name/bin/activate
}
# 退出虚拟环境,不解析命令行参数;
# 其实这个函数可以不需要,激活虚拟环境时调用 deactivate 函数即可
function qvenv() {
if [[ "" == $VIRTUAL_ENV ]]; then
echo "没有激活的虚拟环境, nothing done"
return
fi
deactivate
}