2016-04-01 7 views
9

Ich möchte einen Cron-Job ausführen ein Python-Skript mit einem bereits vorhandenen Anaconda Python-Umgebung namens my_env. Das Einzige, was ich mir vorstellen kann, ist, dass der Cron-Job ein Skript namens my_script.bash ausführt, das wiederum das env aktiviert und dann das Python-Skript ausführt.Ausführen eines Crontab-Jobs mit einem Annaconda-Env

#!/bin/bash 
source activate my_env 
python ~/my_project/main.py 

Der Versuch, dieses Skript aus den Befehlszeilen funktioniert auszuführen nicht:

$ sh scripts/my_script.bash 
scripts/my_script.bash: 9: scripts/my_script.bash: source: not found 

Was muss ich tun, tun, um sicherzustellen, ist die richtige Umgebung aktiviert. Es ist in Ordnung, es mir zu erklären, wie ich bin 5.

Antwort

3

Rufen Sie nicht sh aber bash. source ist ein Bash-Befehl.

- sh scripts/my_script.bash 
+ bash scripts/my_script.bash 

Oder nur

chmod +x scripts/my_script.bash 
./scripts/my_script.bash 

, da Sie die bash shebang hinzugefügt.

10

Ich bin kürzlich von nach Anaconda gewechselt, um weg von der Aktivierung eines env in Cron-Jobs zu kommen. Anaconda macht dies sehr einfach, basierend auf der Umgebungsvariable PATH. (Ich verwende nicht die vollen Anaconds installieren, aber ich glaube, Anaconda sollte auf die gleiche Weise funktionieren)

Es gibt zwei verschiedene Ansätze, die ich getestet habe;

  • ein shebang in Ihrem Python-Skript hinzufügen, main.py

    #!/home/users/user_name/miniconda2/envs/my_env/bin/python

  • PATH hinzufügen Zum Seitenanfang crontab

    PATH=/home/users/user_name/miniconda2/envs/my_env/bin

+0

I umgesetzt Ihr Lösung in Ubuntu 16 und erfolgreich Anaconda zu laufen. Wenn ich jedoch versuche, das PANDAS-Paket in das laufende Python-Skript zu importieren, bekomme ich eine [Errno 2] No solche Datei oder dieses Verzeichnis. Irgendwelche Gedanken, warum? Mein Bash-Befehls-Setup ist ziemlich einfach. 'PATH =/home/dev/anaconda3/bin' ' python/home/dev/AUTOSIFT/script.sh' – Adestin

+0

Verstehen Sie nicht wirklich Ihre Frage. script.sh ist kein Python-Skript. Ist das ein Cronjob? Vielleicht müssen Sie zuerst eine Conda installieren Pandas. –

+1

Ein Shell-Befehl löst ein Python-Skript aus. Ich habe das herausgefunden. Das Problem bestand darin, dass das .sh eine PATH-Variable benötigte, die bei der Ausführung festgelegt wurde. – Adestin