Просто наткнулся на это, и для других, кто может найти ту же проблему, Кен прав, что переменные env не переносятся. Решением, которое я использовал, было добавление следующих строк в мой скрипт. Это имеет дополнительное преимущество: всегда загружать виртуальную среду непосредственно из сценария. (Смысл вы можете использовать скрипт с crontab или launchd без каких-либо других обходных путей.)
base_dir = os.path.dirname(os.path.abspath(__file__))
activate_this = os.path.join(base_dir, 'venv/bin/activate_this.py')
execfile(activate_this, dict(__file__=activate_this))
Больше фона здесь: https://virtualenv.pypa.io/en/latest/userguide.html#using -virtualenv-без-бен-питона