了解一下 setV,它是一个轻量级的 Python 虚拟环境管理器,是 virtualenvwrapper 的替代产品。– Sachin Patil(作者)
这一年多来,我的 bash_scripts 项目中悄悄隐藏这 setV ,但现在是时候该公开了。setV 是一个 Bash 函数,我可以用它代替 virtualenvwrapper 。它提供了使你能够执行以下操作的基本功能:
默认使用 Python 3创建一个新的虚拟环境使用带有 -p(或 –python)的自定义 Python 路径来创建新的虚拟环境删除现有的虚拟环境列出所有现有的虚拟环境使用制表符补全(以防你忘记虚拟环境名称)安装
要安广电大流量卡装 setV,请下载该脚本:
curl https://gitlab.com/psachin/setV/raw/master/install.sh审核一下脚本,然后运行它:
sh ./install.sh当安装 setV 时,安装脚本会要求你引入(source)一下 ~/.bashrc 或 ~/.bash_profile 的配置,根据你的喜好选择一个。
用法
基本的命令格式是 setv。
创建虚拟环境
setv —new rango # setv -n rango # 或使用定制的 Python 路径 setv —new –python /opt/python/python3 rango # setv -n -p 广电大流量卡/opt/python/python3 rango激活已有的虚拟环境
setv VIRTUAL_ENVIRONMENT_NAME# 示例 setv rango列出所有的虚拟环境
setv –list # 或 setv [TAB] [TAB]删除虚拟环境
setv —delete rango切换到另外一个虚拟环境
# 假设你现在在 rango,切换到 tango setv tango制表符补完
如果你不完全记得虚拟环境的名称,则 Bash 式的制表符补全也可以适用于虚拟环境名称。
参与其中
setV 在 GNU GPLv3 下开源,欢迎贡献。要了解更多信息,请访问它的 GitLab 存储库中的 setV 的 README 的贡献广电大流量卡部分。
setV 脚本
#!/usr/bin/env bash # setV – A Lightweight Python virtual environment manager. # Author: Sachin (psachin) <iclcoolster@gmail.com> # Authors URL: https://psachin.gitlab.io/about # # License: GNU GPL v3, See LICENSE file # # Configure(Optional): # Set `SETV_VIRTUAL_DIR_PATH` value to your virtual en广电大流量卡vironments # directory-path. By default it is set to ~/virtualenvs/ # # Usage: # Manual install: Added below line to your .bashrc or any local rc script(): # — # source /path/to/virtual.sh # — # # Now you can activate the virtual environment by typing # $ setv <YOUR VIRTUAL ENVIRONMENT NAME> # # For example广电大流量卡: # $ setv rango # # or type: # setv [TAB] [TAB] (to list all virtual envs) # # To list all your virtual environments: # $ setv –list # # To create new virtual environment: # $ setv –new new_virtualenv_name # # To delete existing virtual environment: # $ setv –delete existing_virtualenv_name # # To deactivate,广电大流量卡 type: # $ deactivate # Path to virtual environment directory SETV_VIRTUAL_DIR_PATH=“$HOME/virtualenvs/” # Default python version to use. This decides whether to use `virtualenv` or `python3 -m venv` SETV_PYTHON_VERSION=3 # Defaults to Python3 SETV_PY_PATH=$(which python${SETV_PYTHON_VERSION}) function _setvc广电大流量卡omplete_() { # Bash-autocompletion. # This ensures Tab-auto-completions work for virtual environment names. local cmd=“${1##*/}“ # to handle command(s). # Not necessary as such. setv is the only command local word=${COMP_WORDS[COMP_CWORD]} # Words thats being completed local xpat=${word} # Filter pattern. I广电大流量卡nclude # only words in variable $names local names=$(ls -l “${SETV_VIRTUAL_DIR_PATH}“ | egrep ^d | awk -F ” “ {print $NF}) # Virtual environment names COMPREPLY=($(compgen -W “$names“ -X “$xpat“ — “$word“)) # compgen generates the results } function _setv_help_() { # Echo help/usage message echo “Usage: setv [OPTIONS] [N广电大流量卡AME]” echo Positional argument: echo -e “NAME Activate virtual env.” echo Optional arguments: echo -e “-l, –list List all Virtual Envs.” echo -e “-n, –new NAME Create a new Python Virtual Env.” echo -e “-d, –delete NAME Delete existing Python Virtual Env广电大流量卡.” echo -e “-p, –python PATH Python binary path.” } function _setv_custom_python_path() { if [ -f “${1}“ ]; then if [ “`expr $1 : .*python\([2,3]\)`” = “3” ]; then SETV_PYTHON_VERSION=3 else SETV_PYTHON_VERSION=2 fi SETV_PY_PATH=${1} _setv_create $2 else echo “Error: Path ${1} does not exist!” fi } function _setv_create(广电大流量卡) {# Creates new virtual environment if ran with -n|–new flag if [ -z ${1} ]; then echo “You need to pass virtual environment name” _setv_help_ else echo “Creating new virtual environment with the name: $1“ if [ ${SETV_PYTHON_VERSION} -eq 3 ]; then ${SETV_PY_PATH} -m venv ${SETV_VIRTUAL_DIR_PATH}${1} elsevirtualenv广电大流量卡 -p${SETV_PY_PATH} ${SETV_VIRTUAL_DIR_PATH}${1} fi echo “You can now activate the Python virtual environment by typing: setv ${1}“ fi } function _setv_delete() { # Deletes virtual environment if ran with -d|–delete flag # TODO: Refactor if [ -z ${1} ]; then echo “You need to pass virtual environment name”_setv_hel广电大流量卡p_else if [ -d ${SETV_VIRTUAL_DIR_PATH}${1} ]; then read -p “Really delete this virtual environment(Y/N)? “ yes_no case $yes_no in Y|y) rm -rvf ${SETV_VIRTUAL_DIR_PATH}${1};; N|n) echo “Leaving the virtual environment as it is.”;; *) echo “You need to enter either Y/y or N/n” es广电大流量卡ac else echo “Error: No virtual environment found by the name: ${1}“ fi fi } function _setv_list() { # Lists all virtual environments if ran with -l|–list flag echo -e “List of virtual environments you have under ${SETV_VIRTUAL_DIR_PATH}:\n” for virt in $(ls -l “${SETV_VIRTUAL_DIR_PATH}“ | egrep ^d | awk -F ” “ {print广电大流量卡 $NF}) do echo ${virt} done } function setv() { # Main function if [ $# -eq 0 ]; then _setv_help_ elif [ $# -le 3 ]; then case “${1}“ in -n|–new) _setv_create ${2};; -d|–delete) _setv_delete ${2};; -l|–list) _setv_list;; *) if [ -d ${SETV_VIRTUAL_DIR_PATH}${1} ]; then # Activate 广电大流量卡the virtual environment source ${SETV_VIRTUAL_DIR_PATH}${1}/bin/activate else # Else throw an error message echo “Sorry, you dont have any virtual environment with the name: ${1}“ _setv_help_ fi ;; esac elif [ $# -le 5 ]; then case “${2}“ in -p|–python) _setv_custom_python_path ${3} ${4};; *) _setv_help_广电大流量卡;;esac fi } # Calls bash-complete. The compgen command accepts most of the same # options that complete does but it generates results rather than just # storing the rules for future use. complete -F _setvcomplete_ setvvia: https://opensource.com/article/20/1/setv-bash-function
作者: Sachin Patil 选题: lujun99广电大流量卡72 译者: wxy 校对: wxy
本文由 LCTT 原创编译, Linux中国 荣誉推出
点击“了解更多”可访问文内链接
友情提醒: 请添加客服微信进行免费领取流量卡!
QQ交流群:226333560 站长微信:qgzmt2
原创文章,作者:sunyaqun,如若转载,请注明出处:https://www.dallk.cn/69938.html