Ich möchte eine Crontab einrichten, um ein Python-Skript auszuführen.
Angenommen, das Skript ist so etwas wie:
#!/usr/bin/python
print "hello world"
Gibt es eine Möglichkeit, eine virtuelle Umgebung anzugeben, in der das Python-Skript ausgeführt werden soll? In der Shell würde ich einfach tun:
~$ workon myenv
Gibt es etwas Äquivalentes, das ich in crontab tun könnte, um eine virtuelle Umgebung zu aktivieren?
quelle
source
Sie es nicht als Heads-up in Ihrer Cron-Zeile, da dies ein Bashismus ist und nicht funktioniert, da Cron/bin/sh
Ihren Befehl ausführt.Eine andere Lösung, die für mich gut funktioniert ...
0 9 * * * /path/to/virtenv/bin/python /path/to/cron_script.py
Ich bevorzuge die Verwendung von Python direkt aus der virtuellen Umgebung ...
quelle
.pth
Datei in Ihrer virtuellen Umgebungvirtual_env_folder/lib/python3.3/site-packages/app_name.pth
mit dem Speicherort Ihrer App hinzufügen,Mit bash können Sie einen generischen virtuellen env-Wrapper erstellen, mit dem Sie einen beliebigen Befehl aufrufen können , ähnlich wie Sie
time
einen Befehl umschließen können.virt_env_wrapper.bash
::#!/bin/bash source path/to/virtual/env/bin/activate "$@"
Bashs magische Beschwörung
"$@"
entgeht allen Token auf der ursprünglichen Befehlszeile, sodass Sie Folgendes aufrufen können:virt_env_wrapper.bash python foo.py bar 'baz blap'
foo.py
würde einsys.argv
von sehen['bar', 'baz blap']
quelle