Python 使用crontab在prawcore上导入恐怖主义
所以我用python和praw编写了自己的墙纸变换器,从reddit中提取图像。当从命令行调用时,它工作得非常好。我的问题是crontab。我使用Python 使用crontab在prawcore上导入恐怖主义,python,linux,crontab,linux-mint,Python,Linux,Crontab,Linux Mint,所以我用python和praw编写了自己的墙纸变换器,从reddit中提取图像。当从命令行调用时,它工作得非常好。我的问题是crontab。我使用sudocrontab-e修改了crontab,并将其放在 ***/usr/bin/python/home/would\u even/RWPC>/var/log/wallpaper\u output.log 2>&1 这将返回错误 Traceback (most recent call last): File "/home/doubt_even/
sudocrontab-e
修改了crontab,并将其放在
***/usr/bin/python/home/would\u even/RWPC>/var/log/wallpaper\u output.log 2>&1
这将返回错误
Traceback (most recent call last):
File "/home/doubt_even/RWPC", line 9, in <module>
import praw
File "/usr/local/lib/python2.7/dist-packages/praw/__init__.py", line 14, in <module>
from .reddit import Reddit # NOQA
File "/usr/local/lib/python2.7/dist-packages/praw/reddit.py", line 11, in <module>
from prawcore import (Authorizer, DeviceIDAuthorizer, ReadOnlyAuthorizer,
ImportError: No module named prawcore
我注意到,如果我使用命令行中的sudo前缀运行脚本,它将无法成功更改墙纸。我尝试将脚本放入cron.hourly,并将相同的crontab条目放入常规的crontab-e
。当我将输出文件放入crontab-e
时,它不工作,因此我不确定问题出在哪里
doubt_even@mint ~ $ sudo /usr/bin/python -c "import sys; print sys.path"
['', '/usr/local/lib/python2.7/dist-packages/pyPdf-1.13-py2.7.egg', '/usr/local/lib/python2.7/dist-packages/pygeoip-0.3.2-py2.7.egg', '/usr/local/lib/python2.7/dist-packages/mechanize-0.2.5-py2.7.egg', '/usr/local/lib/python2.7/dist-packages/beautifulsoup4-4.5.3-py2.7.egg', '/usr/lib/python2.7/dist-packages', '/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', '/home/doubt_even/.local/lib/python2.7/site-packages', '/usr/local/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages/PILcompat', '/usr/lib/python2.7/dist-packages/gtk-2.0', '/usr/lib/python2.7/dist-packages/ubuntu-sso-client']
doubt_even@mint~ $/usr/bin/python -c "import sys; print sys.path"
['', '/usr/local/lib/python2.7/dist-packages/pyPdf-1.13-py2.7.egg','/usr/local/lib/python2.7/dist-packages/pygeoip-0.3.2-py2.7.egg', '/usr/local/lib/python2.7/dist-packages/mechanize-0.2.5-py2.7.egg', '/usr/local/lib/python2.7/dist-packages/beautifulsoup4-4.5.3-py2.7.egg', '/usr/lib/python2.7/dist-packages', '/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', '/home/doubt_even/.local/lib/python2.7/site-packages', '/usr/local/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages/PILcompat', '/usr/lib/python2.7/dist-packages/gtk-2.0', '/usr/lib/python2.7/dist-packages/ubuntu-sso-client']
doubt_even@mint ~ $ /usr/bin/python -c "import prawcore; print prawcore.__file__"
/home/doubt_even/.local/lib/python2.7/site-packages/prawcore/__init__.pyc
我还尝试了一个明确说明PYTHONPATH的方法,但我读到这不是最好的解决方案
有什么想法吗?为了让解释器找到模块,包含模块的目录(即,不是模块本身)应该列在
PYTHONPATH
上
解决方案1:
使用root的crontab
(如sudo crontab-e
)运行,并在脚本中:
# let the interpreter find prawcore
import sys
sys.path.append('/home/doubt_even/.local/lib/python2.7/site-packages/')
解决方案2:
为crontab环境设置PYTHONPATH
:
$sudo crontab-e
PYTHONPATH=$PYTHONPATH:/home/doubt_even/.local/lib/python2.7/site-packages/
* * * * * /usr/bin/python /home/doubt_even/RWPC >> /var/log/wallpaper_output.log 2>&1
我还尝试了一个明确说明PYTHONPATH的方法,但我读到这不是最好的解决方案
我在过去使用过这种方法,从未见过任何不协调的情况。也许你可以分享
解决方案3:
带着怀疑运行\u偶的crontab
(如crontab-e
)
…当我将输出文件放入crontab-e时,它不工作
您可以通过写入到常规用户具有写入权限的另一个目录来解决此问题,如中所示
***/usr/bin/python/home/loise\u偶/RWPC>/home/loise\u偶/.wallpaper\u output.log 2>&1
-是否存在此目录:/home/loise\u偶/.local/lib/python2.7/site packages/prawcore/
?-它是否有一个\uuuuu init\uuuuuuu.py
_我还试着明确地说明蟒蛇,你能解释一下吗?还有。。。如果您将运行此命令的结果粘贴到控制台中,这将非常有用1)/usr/bin/python-c“import sys;print sys.path”
2)/usr/bin/python-c“import prawcore;print prawcore.”它确实存在,并且包含\uu init\uuuuuuuuuuuuuuy.py
文件,请添加sudo/usr/bin/python-c“import sys;print sys.path”
的输出。我想你会自己看到答案(提示:我希望在输出中看不到/home/discome\u甚至/.local/lib/python2.7/site packages
)谢谢,解决方案1解决了导入错误。
PYTHONPATH=$PYTHONPATH:/home/doubt_even/.local/lib/python2.7/site-packages/
* * * * * /usr/bin/python /home/doubt_even/RWPC >> /var/log/wallpaper_output.log 2>&1