Deactivate python virtual environment on exit from any shell,
not only login shell.
 # ~/.bash_logout: executed by bash(1) when login shell exits.
 
-# Clean up python virtual environment on exit
-# See https://virtualenvwrapper.readthedocs.io/en/latest/tips.html#clean-up-environments-on-exit
-
-[ "$VIRTUAL_ENV" ] && deactivate
-
 # when leaving the console clear the screen to increase privacy
 
 if [ "$SHLVL" = 1 ]; then
 
       . "$VIRTUAL_ENV/bin/activate"
    fi
 
+   # Clean up python virtual environment on exit
+   # See https://virtualenvwrapper.readthedocs.io/en/latest/tips.html#clean-up-environments-on-exit
+
+   trap '[ "$VIRTUAL_ENV" ] && deactivate' EXIT
+
 elif test -n "$KSH_VERSION" -o -n "$FCEDIT"; then
    back() { cd - "$@"; }
    j() { jobs; }