我试图像这样通过crontab运行python脚本
@reboot cd /root/open_nsfw/ && /usr/bin/screen -dm -L /usr/bin/python /root/open_nsfw/fn_tcp2.py
但失败的原因找不到caffe ImportError: No module named caffe
caffe.__file__
给了我这个输出
/root/caffe/python/caffe/__init__.pyc
由crontab运行的sys.path
的输出是
['/root/open_nsfw', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-x86_64-linux-gnu', '/usr/lib/python2.7/lib-tk', '/usr/lib/python2.7/lib-old', '/usr/lib/python2.7/lib-dynload', '/usr/local/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages/PILcompat']
(没有caffe)但是来自shell
['', '/root/caffe/python', '/root/open_nsfw', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-x86_64-linux-gnu', '/usr/lib/python2.7/lib-tk', '/usr/lib/python2.7/lib-old', '/usr/lib/python2.7/lib-dynload', '/usr/local/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages/PILcompat']
(caffe就在那里!)所以,我认为我有解决这个问题的所有因素,但我无法弄清楚如何!
请指教,谢谢!
编辑解决了在脚本开头添加这些行的问题
import sys
sys.path.insert(0, "/root/caffe/python/")
从crontab
运行时,您没有在shell中设置环境变量。你只能得到最低限度。您需要在crontab脚本中明确设置PYTHONPATH
以包含caffe