cron定时运行python virtualenv中的python程序

 我是黄小果1960 发布于 2022-11-05 14:33

virtualenv路径 /home/test/py/python

virtualenv中使用pip install beautifulsoup了,现在/home/test/py/下有test.py,里面 from bs4 import BeautifulSoup 来使用bs

直接 /home/test/py/python/bin/python /home/test/py/test.py 执行正常 但 crontab -e 新建一个cron,内容如下:

10 10 * * * /home/test/py/python/bin/python /home/test/py/test.py

却没有执行结果。是哪里有问题?

2 个回答
  • 我之前也遇到过这个问题,我的解决办法是这样的,创建一个shell脚本,然后在shell脚本里面调用python,代码如下:

    !/bin/bash

    cd /var/PyEnvs/InstaHub-V1/
    source ./bin/activate
    cd site/tasks
    /var/PyEnvs/InstaHub-V1/bin/python task_push_message.py
    deactivate

    InstaHub-V1是我的python虚拟环境,这个脚本已经跑了2个月了,目前为止没有发现问题

    2022-11-09 20:54 回答
  • 先确认这一条计划任务是否被执行了:

    10 10 * * * /home/test/py/python/bin/python /home/test/py/test.py > /home/test/test.log
    

    如果出现了 test.log, 那么说明这一条确实被执行了,但是那个 test.py 没有按照预期来执行。
    在 crontab 里最主要的问题还是环境变量的问题,因为 .bashrc 不会被执行,所以很多环境变量都没有。
    你可以检查一下 test.py 是否依赖某个环境变量,或者依赖当前工作目录
    可以先试着在 test.py 里写个 Hello World, 看看是否会被输出到 test.log.

    2022-11-09 20:55 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有