我的python脚本在终端中运行良好。但是当我尝试使用usig crontab运行脚本时,我的脚本无法导入模块,或者找不到文件。
我的环境如下
❯ uname -a
Darwin cui-MacBook-Pro.local 18.5.0 Darwin Kernel Version 18.5.0: Mon Mar 11 20:40:32 PDT 2019; root:xnu-4903.251.3~3/RELEASE_X86_64 x86_64
❯ python --version
Python 3.7.1
我尝试使用这样的绝对路径运行cron,但仍然无法正常工作
* * * * * /anaconda3/bin/python /Users/c/Documents/dev/crawler/crawl.py
我也尝试先更改目录并像这样运行python脚本
* * * * * cd /Users/c/Documents/dev/crawler && python crawl.py >> ./log/test.sh.log 2>&1
这是我简单的python脚本。
from flask import Flask
import cafe_kakao.forms
f = open("./config.ini", 'r')
f.close()
print('do nothing')
❯ more test.sh.log
Traceback (most recent call last):
File "test.py", line 1, in <module>
from flask import Flask
ImportError: No module named flask
Traceback (most recent call last):
File "test.py", line 1, in <module>
from flask import Flask
ImportError: No module named flask
我当然已经安装了flask。(我的上述脚本在我的终端机(iterm)或Visual Studio代码环境中运行良好。
奇怪的是,我注释掉第一行,第二行(导入行)后,最后一个代码有效(文件成功打开,而print()有效)
我可以尝试通过所有python脚本使用绝对路径。但是我想这不是一个好主意,因为我最终将在Amazon EC2中运行脚本,并且不想每次都更改路径。