set pythonpath(setV:一个管理 Python 虚拟环境的 Bash 函数)

了解一下 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_ setv

via: 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

(0)
sunyaqunsunyaqun
上一篇 2024年11月26日
下一篇 2024年11月26日

相关推荐

发表回复

登录后才能评论