0

我在 Mac 上使用 oh-my-zsh,python 3.6.1。我想运行一个 crontab 来执行一个 python3 脚本。

我最近的一次尝试是这个(我发现的 20 个不同的 stackoverflow 答案都没有工作,所以请不要将其作为重复项关闭:

SHELL=/bin/bash
24 12 * * * root source env/latest-env/bin/activate && /usr/local/bin/python3 /path/to/file/data_transfer.py

错误是ModuleNotFoundError: No module named 'some_module',因此它没有激活我的 virtual_env,因为该模型存在于最新的虚拟环境中。#!env/latest-env/bin/python在我的脚本顶部使用并运行它时,我得到了同样的错误。

我也尝试了 venv 版本:

activate_this = '/path/to/env/bin/activate_this.py'
execfile(activate_this, dict(__file__=activate_this))

但这是针对 python 2 的,所以错误是NameError: name 'execfile' is not defined,当我将其更改为 exec 时,我得到NameError: name 'env' is not defined. 但我知道这是我的道路。

如何在 crontab 中激活我最新的 venv 以运行我的脚本?

4

1 回答 1

1

创建虚拟环境后,该环境将绑定到其/bin子目录中的解释器。因此,您应该找到一个 crontab 条目,例如

24 12 * * * root /path/to/env/latest-env/bin/python /path/to/file/data_transfer.py

会做你需要的一切。

于 2017-08-22T22:14:39.723 回答