【问题标题】:Cron does not execute a python script that needs a python3 module in AWS-ec2Cron 不执行需要 AWS-ec2 中的 python3 模块的 python 脚本
【发布时间】:2021-05-09 01:10:36
【问题描述】:

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

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

但正如我所说,它在 cron 之外运行良好。

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

【问题讨论】:

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


    【解决方案1】:

    您必须制作一个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脚本

    【讨论】:

    • 非常感谢您的解释。完美解决了我的问题
    【解决方案2】:

    创建文件为 'user_cron.sh'

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

    使用 crontab -e 设置 cron

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-01-21
      • 2011-05-04
      • 2019-07-01
      • 1970-01-01
      • 2018-06-27
      • 2017-07-18
      • 1970-01-01
      相关资源
      最近更新 更多