在python3 mac上用crontab打开venv

时间:2017-07-20 05:55:10

标签: python python-3.x cron python-venv

我在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以使我的脚本运行?

1 个答案:

答案 0 :(得分:1)

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

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

会做你需要的一切。