Python Script nie działa w crontab wywołując pysaunter
Przeczytałem wiele postów i wiele artykułów szczegółowo opisujących, że scipts w zadaniu cron muszą zachować zmienne środowiskowe niezbędne do uruchomienia wewnątrz skryptu z powodu otwarcia powłok w cronie. Moja sytuacja jest wyjątkowa, ponieważ wszystkie zmienne ścieżki są ustawiane tak, jak to omówiono, co z kolei z powodzeniem wywoła jajo pytona pysaunterasubprocess.call (), ale wydaje się, że stamtąd się załamuje. Powoduje to przerwanie całego procesu w zadaniu cron.
Dla jasności, oto kroki, o których mówię:
1) cronjob calls run_test.py -n foo
2) run_test.py sets the environment variables correctly
(cur_shell_path=sys.path (converted to proper path string, not shown here)
my_env= os.environ.copy()
my_env["PATH"] = my_env["PATH"] + cur_shell_path)
3) run_test.py calls subprocess.call("pysaunter -m foo -v", env=my_env, shell=True)
Wynik kroku 3 pokazuje, że znajduje jajo i pomyślnie zaczyna ładować niezbędne moduły z pysaunter, ale następnie łamie się przy próbie znalezienia katalogu używanego do modyfikacji pysaunter. Błąd brzmi:
ImportError: no module named helpers
Próbowałem dodać tę ścieżkę do środowiska wiele razy, ale nigdy nie wydaje się, aby znaleźć katalog zawierający helpers.py. Komendapysaunter -m foo -v
działa normalnie po wywołaniu z interaktywnej powłoki.
Nie mogłem znaleźć wiele pomocy na pysaunter, więc zakładam, że zbyt wiele szczegółów dotyczących pysauntera byłoby tutaj niepotrzebne. Jeśli jednak wiesz więcej o pysaunter, daj mi znać, jeśli potrzebujesz więcej informacji. Nie wiem, co udostępniać.
Czytałem również wiele postów omawiających możliwość zmiany domyślnego zachowania powłoki poprzez edycję .profile / .bash_profile. Próbowałem znaleźć miejsce, które uczyniłoby moje zmienne ścieżki dostępnymi na całym świecie, ale nic nie znalazłem. Nie wiem, jak to się robi i może rozwiązać mój problem, więc jeśli coś o tym wiesz, daj mi znać.
Ostatnia uwaga: działa na komputerze Mac 10.7.5.