Ben bir cron işi scipts nedeniyle cron içinde kabuklar açılışına komut nun içine çalıştırmak için gerekli ortam değişkenleri tutmak gerektiğini detaylandırma çoklu mesajları ve birçok makale okudum çağıran crontab çalışmıyor. Benim durumum değişkendir, çünkü benim yol değişkenlerim tartışıldıkları şekilde ayarlanıyorlar, bu da subprocess.call() kullanarak pysaunter python yumurtasını başarılı bir şekilde çağırıyor, ama oradan kopacak gibi görünüyor. Bu, tüm sürecin bir cron işinde kırılmasına neden olur.Python Senaryo pysaunter
Anlaşılır olması için, burada atıfta adımlar şunlardır:
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)
adım 3'ün çıkış o yumurtayı bulma ve başarılı pysaunter gerekli modülleri yüklemek için başlar, ama sonra ne zaman kırılır olduğunu göstermektedir
pysaunter'ı değiştirmek için kullanılan bir dizini bulmaya çalışmak. Ben çevreye birden çok kez bu yolu ekleyerek çalıştılar
ImportError: no module named helpers
ama asla helpers.py içeren dizini bulmak için görünüyor: hata okur. pysaunter -m foo -v
komutu, etkileşimli bir kabuktan çağrıldığında normal olarak çalışır.
ben pysaunter üzerinde çok yardım bulamadık, bu yüzden çok fazla pysaunter özelliklerini burada gereksiz olacağını varsayabiliriz. Eğer pysaunter hakkında daha fazla şey biliyorsanız, daha fazla bilgiye ihtiyaç duyarsanız lütfen bize bildirin. Ne paylaşacağımı bilmiyorum.
Ayrıca, bir kabuğun varsayılan davranışını .profile/.bash_profile dosyasını düzenleyerek değiştirme yeteneğini tartışan birçok yazı okudum. Yol değişkenlerimi küresel olarak erişilebilir kılacak bir yer bulmaya çalıştım, ancak hiçbir şey bulamadım. Bunun nasıl yapıldığından emin değilim ve sorunumu düzeltebilir, bu yüzden bu konuda bir şey biliyorsanız lütfen bana bildirin.
Son Not, bu Mac 10.7.5 çalışıyor. Söylediğin Ne
Sorunumu belirttiğiniz için teşekkür ederiz, şimdi my_env öğesinin geçildiğini göstermek için düzeltdim. Ayrıca, Unix tabanlı makinelerde, kolon (:) yol değerlerini ayırmak için kullanılır, böylece bir sorun olmaz. Son olarak, PYTHONPATH kabuk [başlatılan] nerede ile tanımlanır Unix yerel dizini, arama için kullanılan (http://docs.python.org/release/1.5.1p1/tut/searchPath.html). Cron işleri, doğru dizinden başlatılmayan ve .profile veya .bash_profile öğelerini okumayan etkileşimli bir kabuk çağırdığından, yol eklenmez ve bu nedenle Pythonpath ayarlanmaz. – derigible
Kolon hakkında haklıydın. Onu tamir ettim. PYTHONPATH'ı cron işine ayarlamanız gerekir. İstediğiniz dizine PYTHONPATH ayarlayan bir sarıcı komut dosyası oluşturabilir ve sonra python komut dosyasını çağırırsınız. – korylprince