【问题标题】:How to auto start python script running in virtualenv using crontab?如何使用 crontab 自动启动在 virtualenv 中运行的 python 脚本?
【发布时间】:2021-08-24 16:24:10
【问题描述】:

这就是我通常在 Ubuntu 20.04 上的 virtualenv 中运行 python 脚本的方式。

source hibi/bin/activate
python -m hibiapi

现在我想做一个 cronjob 让它在启动时自动启动 python 脚本,但我不知道正确的语法。谁能纠正我?

@reboot /var/www/api.adoreanime.com/htdocs/hibi/bin/python /var/www/api.adoreanime.com/htdocs/HibiAPI/hibiapi/ -m hibiapi

错误日志:

Traceback (most recent call last):
  File "/usr/lib/python3.8/runpy.py", line 194, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "/usr/lib/python3.8/runpy.py", line 87, in _run_code
    exec(code, run_globals)
  File "/var/www/api.adoreanime.com/htdocs/HibiAPI/hibiapi/__main__.py", line 8, in <module>
    from . import __file__ as root_file
ImportError: attempted relative import with no known parent package

【问题讨论】:

  • 为什么包含/var/www/api.adoreanime.com/htdocs/HibiAPI/hibiapi/,您希望它应该做什么?把它拿出来,
  • @tripless 我想我需要包含脚本模块的路径,否则它不知道它的位置?无论如何我试着把它拿出来,但它仍然不会在启动时自动启动脚本
  • 您收到错误消息吗?您可能发现了一个单独的错误。虚拟环境负责设置 Python 的模块路径,这就是它的作用。
  • 我已经更新了第 1 个帖子以包含错误
  • 如果它在 crontab 之外(仅)在特定目录中工作,您也可以在 cron 作业中将 cd 转到该目录,作为一种解决方法。正确的解决方案是修复import,使其在任何地方都可以工作,但如果没有看到您的代码,我们无法告诉您如何操作。

标签: python cron


【解决方案1】:

使用 shell 脚本来执行此操作。

cd /your/module/location
source hibi/bin/activate
/full/path/to/python -m hibiapi

将上述内容保存在脚本名称中,例如 cron_run_hibiapi.sh。

通过运行使您的脚本成为可执行文件:

chmod +x /full/path/to/cron_run_hibiapi.sh

使用 crontab -e 打开 crontab 并将下面一行添加到底部。

@reboot /bin/bash -c "/full/path/to/cron_run_hibiapi.sh" &

这是未经测试的,但我相信它应该可以工作。

【讨论】:

    猜你喜欢
    • 2023-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-04
    • 1970-01-01
    • 1970-01-01
    • 2022-01-05
    相关资源
    最近更新 更多