Wenn man einem Python-Script per Cron in einen Virtual Environment starten möchte bringt dies ein paar Probleme mit sich. Das Virtual Environment muss vorher aktiviert werden und dann erst das Script ausgeführt werden.
Man kann dies nun umständlich für jedes Script separat erledigen oder mach baut sich einen universellen Wrapper.
Der Wrapper legt man einfach in sein Homedir und übergibt diesem per Parameter das auszuführende Python-Script.
Python Virtualenv Wrapper
Wir erstellen eine Datei cron_wrapper.sh im HomeDir des Users.
#!/bin/bash # cron_wrapper.sh # phyton venv cron wrapper cd `dirname $0` # Pfad zum virtual environment source .venv/bin/activate python "${@:1}"
Per Cronjob kann diese nun folgendermaßen aufgerufen werden.
*/10 * * * * /pfad_zum_wrapper/cron_wrapper.sh /pfad_zum_python_script/python_script.py >> /tmp/cron.log 2>&1
Der Wrapper kann natürlich noch ausgebaut werden, z.B. kann man den Pfad des Virtual Environment auch dynamisch per Parameter übergeben.