Если вы используете «workon», вы на самом деле используете «virtualenv wrapper», который является еще одним слоем абстракции, который находится поверх виртуального. virtualenv только может быть активирована cd'ing к вашему virtualenv корневой директории и запуску:
source bin/activate
workon является команда обеспечивается virtualenv обертки, не virtualenv, и это делает некоторые дополнительные вещи, которые не обязательно требуются для обычного virtualenv , Все, что вам действительно нужно сделать, это запустить файл bin/activate в вашем корневом каталоге virtualenv, чтобы «активировать» virtualenv.
Вы можете настроить ваш кронтаб для вызова Баш скрипт, который делает это:
#! /bin/bash
cd my/virtual/env/root/dir
source bin/activate
# virtualenv is now active, which means your PATH has been modified.
# Don't try to run python from /usr/bin/python, just run "python" and
# let the PATH figure out which version to run (based on what your
# virtualenv has configured).
python myScript.py
Должен ли я использовать «#!/Usr/bin/python», чтобы указать мой интерпретатор Python в моем сценарии? Но мой virtualenv может указывать на другого переводчика. Здесь я смущен. – Continuation
Возможно, вы захотите взглянуть на то, что делает bin/activate. Активация virtualenv в основном просто изменяет ваш PATH env var, чтобы указать на определенные версии команд, например, на python и т. Д. Если вы активируете virtualenv, попробуйте запустить/usr/bin/python, вы можете или не можете использовать версию python, который ожидает ваш virtualenv. Вместо того, чтобы делать «#!/Usr/bin/python», вы можете сделать «#!/Usr/bin/env python», чтобы позволить env решить, какой python запускаться, на основе вашего PATH. –
Как хэдз-ап, не пытайтесь использовать 'source' в своей линии cron, как его багизм и не будет работать, поскольку cron будет использовать'/bin/sh' для выполнения вашей команды. –