我在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以使我的脚本运行?
答案 0 :(得分:1)
创建虚拟环境后,环境将绑定到 / bin 子目录中的解释器。因此,您应该找到一个crontab条目,例如
24 12 * * * root /path/to/env/latest-env/bin/python /path/to/file/data_transfer.py
会做你需要的一切。