Skip to content

SinOverCos/auto-virtualenv

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 

Repository files navigation

Auto virtualenv

I'm so confused why there's no existing utility to automatically activate and deactivate virtual environments.

# ~/.bashrc

auto_virtualenv() {
    command=$(python3 ~/auto-virtualenv/venv_toggle_command.py --command)
    eval $command
}

virtualenv_info() {
    project_name=$(python3 ~/auto-virtualenv/venv_toggle_command.py --project-name)
    if [[ -n $project_name ]]; then
        echo "($project_name) "
    fi
}

export VIRTUAL_ENV_DISABLE_PROMPT=1
export PROMPT_COMMAND=auto_virtualenv
export PS1="\$(virtualenv_info) ~> "

Q: Why do we use PROMPT_COMMAND? Wouldn't it be easier if virtualenv_info just executed auto_virtualenv for us?

A: That would be cleaner. However, $(...) (known as command substitution) executes the command in a subshell. If we source bin/activate in a subshell, the modifications done in bin/activate would not be reflected in the shell that we're working in. As far as I know, there's no way for bash to evaluate the $() calls inside the PS1 string in the current shell.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages