我正在努力将python脚本作为一个cron作业运行。
我以root身份登录 python脚本的权限是
-rwxr-xr-x 1 root root 2374 Mar 1 22:49 k_collab_spark.2.py
我正在使用
启动脚本#!/usr/bin/env python
我测试了pythong脚本 如果我做“./ k_collab_spark.2.py”这个工作正常。
在crontab上的我已将作业设置为
15 12 * * * /opt/lampp/htdocs/testme/SPARK/k_collab_spark.2.py >> /var/log/kspark.log
我在日志文件中看不到任何消息
一旦我加上2>& 1就会出现错误Traceback(最近一次调用最后一次): 文件“/opt/lampp/htdocs/kabeer/SPARK/k_collab_spark.2.py”,第2行,in 导入请求 ImportError:没有名为requests的模块,但如果我手动执行该服务则成功。我手动运行它可以正常工作
尝试定义路径但仍然是同一个问题
PATH =的/ usr / local / sbin中:在/ usr / local / bin中:/ sbin目录:/ bin中:/ usr / sbin目录:在/ usr / bin中 导入请求 ImportError:没有名为requests的模块
不知道我错过了什么..感谢周围的任何帮助。
答案 0 :(得分:0)
python
吗?2>&1
,它还会将错误消息重定向到日志文件。有关详细说明In the shell, what does " 2>&1 " mean? root
也可能运行不同版本的python。答案 1 :(得分:0)
尝试使用另一个第一行运行脚本:
#!/usr/bin/python
如果它在python解释器中成功执行了问题,因为当你安装了几个版本的Python时,/ usr / bin / env将确保使用的解释器 - 是环境中的第一个$ PATH ,我猜没有请求lib 。
答案 2 :(得分:0)
我使用shell脚本来调用python脚本。盒子上的蟒蛇造成了麻烦
export PATH = / opt / anaconda3 / bin:$ PATH / opt / anaconda3 / bin / python /opt/lampp/htdocs/scriptme.py> /opt/lampp/htdocs/scriptme.log 2>& 1
答案 3 :(得分:0)
将以下代码行添加到脚本中并编辑crontab:
from distutils.sysconfig import get_python_lib
print(get_python_lib())
现在检查crontab中的日志,您将获得一些路径
e.g. "/usr/lib/python2.7/dist-packages"
cd(更改目录)到上述路径,然后 ls(列表目录)检查软件包是否存在; 如果不是:
sudo pip3 install requests -t . # dot indicates current directory
,否则,如果您有 requirements.txt 文件,则可以尝试:
sudo pip3 install -r requirements.txt -t "/usr/lib/python2.7/dist-packages"
#try this from the directory where "requirements.txt" file exists
现在运行您的脚本。