我已是兄弟姐妹一個Python驅動程序和庫腳本:蟒蛇的crontab和路徑
/home/mydir/pythonProjs/
driver.py
lib.py
在driver.py
我也行:
from lib import method1
以下是在Linux上從我的命令行成功:
python /home/mydir/pythonProjs/driver.py
但是當我嘗試在crontab中執行以下操作:
10 1 * * * export PYTHONPATH=~/mydir/pythonProjs; python /home/mydir/pythonProjs/driver.py
我得到的錯誤:
ImportError: No module named lib.method1
我也嘗試將我的crontab命令中的路徑設置更改爲完全限定路徑/home/mydir/pythonProjs
,省略「導出」,並且還嘗試編寫.sh文件(必要的#!bin/bash ...)
我有一個主要問題和後續問題: main:什麼是解決我的問題的最佳實踐方法? 後續:cron具有不同於我的shell的路徑訪問權後面的哲學是什麼?
之前,我得到了投得太快,我會提到我已閱讀,但都沒有成功(或正確解析)以下內容: - Where can I set environment variables that crontab will use? - Crontab Issues running Python - http://pythonadventures.wordpress.com/2012/03/31/calling-a-python-script-from-crontab/
謝謝!除了你在我的crontab頂部建議的SHELL命令之外,還有必要在我的driver.py腳本的頂部添加這個shebang: '#!/ usr/bin/env python' 奇怪的是,如果我沒有在家中包含後者和$ journalctl,那麼我沒有看到從cron記錄的任何錯誤,但driver.py沒有完全執行(例如,它似乎不會導入lib.py)。 也感謝'env>'建議。 – Quetzalcoatl 2014-09-03 14:34:48
如果我可以,你能否解決後續問題?例如,像我這樣的業餘愛好者怎麼會自己拿出'SHELL =/bin/bash'和'#!/ usr/bin/env python'解決方案?什麼可能是一些關於cron和/或Python的「標準」引用,可能導致我走上正確的道路? – Quetzalcoatl 2014-09-03 14:40:06
嗨。關於你的後續問題。 「cron」不讀用戶環境變量的原因是安全性。 「cron」的標準參考是Unix手冊頁,例如http://www.unix.com/man-page/linux/5/crontab/最後,關於「最佳實踐」的問題是關於SO的話題,無論如何,我沒有很好的答案。 – user2314737 2014-09-04 06:22:55