The virtualenv helper doesn't evaluate the output of run_deactivate_if_present() when leaving (src)
eval run_deactivate_if_present
smartcd on-leave run_deactivate_if_present
This results in smartcd just printing the shell code instead of deactivating the virtualenv:
❯ cd
[ "`type -w deactivate`" = "function" ] && deactivate