Cron没有执行需要AWS-ec2中的python3模块的python脚本

时间:2018-01-28 19:50:43

标签: python python-3.x amazon-ec2 module cron

我试图在crontab上创建一个cron作业,它在AWS ec2上运行python脚本。我的python脚本包含一个仅适用于python3的模块。 使用以下命令我将ec2默认python解释器从python2.7更改为python3.4 Source / home / ec-2user / venv / python34 / bin / activate 然后使用pip install,我为python3.4安装了所需的模块。所以现在默认的解释器是python3.4,当我使用以下命令在ec2-user目录上运行脚本时: python test.py 程序运行没有任何问题(所以我确信模块安装正确)。 但是当我将python文件分配给cronjob时 * * * * * python test.py

它不起作用。检查邮件,错误是: “找不到名为”xxxxx“的模块

但正如我所说,它在cron之外工作正常。

我想知道你是否可以帮我解决这个问题。感谢您的时间和信息。

2 个答案:

答案 0 :(得分:0)

你必须制作一个shell脚本,它将执行更改脚本目录,激活虚拟环境然后运行它的步骤。

示例:

#!/bin/bash

cd $YOUR_DIR
. venv/bin/activate
python3.4 test.py

然后你用cron调用这个脚本 /bin/bash /.../script.sh

你还可以做什么

chmod +x test.py

并将第一行添加/更新为:

#!/usr/bin/env python3.4

这样您就可以使用./test.py

运行Python脚本

答案 1 :(得分:0)

创建文件为'user_cron.sh'

#!/bin/bash
cd '/root/my_new_project_python'
. my_project_venv/bin/activate
python3 main.py

使用 crontab -e 设置 cron