解决conda与virtualenv之间deactivate冲突

原因: 由于virtualenv 创建的 shell 函数 deactivate 与环境变量中 conda 文件 deactivate 重名,导致 virtualenv 环境中执行 deactivate 出现维妮塔

来源:
env/quast/bin/activate 实际是shell 脚本,从其中找到deactivate

解决:
conda 使用命令 conda deactivate
virtualenv 使用下列shell 脚本 创建函数(函数名可以改为其它的)

deactivate () {
    unset -f pydoc >/dev/null 2>&1 || true

    # reset old environment variables
    # ! [ -z ${VAR+_} ] returns true if VAR is declared at all
    if ! [ -z "${_OLD_VIRTUAL_PATH:+_}" ] ; then
        PATH="$_OLD_VIRTUAL_PATH"
        export PATH
        unset _OLD_VIRTUAL_PATH
    fi
    if ! [ -z "${_OLD_VIRTUAL_PYTHONHOME+_}" ] ; then
        PYTHONHOME="$_OLD_VIRTUAL_PYTHONHOME"
        export PYTHONHOME
        unset _OLD_VIRTUAL_PYTHONHOME
    fi

    # The hash command must be called to get it to forget past
    # commands. Without forgetting past commands the $PATH changes
    # we made may not be respected
    hash -r 2>/dev/null

    if ! [ -z "${_OLD_VIRTUAL_PS1+_}" ] ; then
        PS1="$_OLD_VIRTUAL_PS1"
        export PS1
        unset _OLD_VIRTUAL_PS1
    fi

    unset VIRTUAL_ENV
    if [ ! "${1-}" = "nondestructive" ] ; then
    # Self destruct!
        unset -f deactivate
    fi
}

# run command
deactivate

你可能感兴趣的:(解决conda与virtualenv之间deactivate冲突)