我试图在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之外工作正常。
我想知道你是否可以帮我解决这个问题。感谢您的时间和信息。
答案 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
答案 1 :(得分:0)
创建文件为'user_cron.sh'
#!/bin/bash
cd '/root/my_new_project_python'
. my_project_venv/bin/activate
python3 main.py
使用 crontab -e 设置 cron