92 lines
2.2 KiB
Bash
92 lines
2.2 KiB
Bash
#!/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
|
||
}
|
||
|