【发布时间】:2021-06-27 15:26:55
【问题描述】:
我的目标是每天运行一个脚本,用来自 Google Analytics 的数据更新一个 google sheet。
当我在我的虚拟机实例上运行代码时,它会返回一个错误:
ModuleNotFoundError: No module named 'googleapiclient'
模块已安装,如果我运行:
$ source [project-name]/bin/activate
然后在虚拟机上调用我的脚本,它可以工作,更新就完成了。
我正在尝试将脚本设置为每天运行,我尝试使用 crontab 进行设置: (用于测试我每 5 分钟使用一次)
我试过了:
*/5 * * * * python3 myscript.py
和
*/5 * * * * $ python3 myscript.py
和
*/5 * * * * source [project-name]/bin/activate
*/5 * * * * python3 myscript.py
这是我第一次尝试设置 crontab 作业,因此也欢迎任何调试建议。
【问题讨论】:
-
似乎您仅在 virtualenv 中安装了依赖项,因此在尝试运行脚本而不首先激活 virtualenv 时会出现错误。社区中的以下post 应该会引导您以正确的方式运行您的脚本我希望您对维护 virtualenv 感兴趣。另一种解决方案可能是简单地全局安装脚本使用的依赖项(这将简单地转换为运行“pip install [DEPENDENCY]”而无需先激活您的 virtualenv。
-
谢谢,我在想这是问题所在,我以错误的方式安装了它。我尝试全局安装它,它说它已经安装了。您认为如果我启动一个新的 VM 实例并使用 pip 再次安装它会起作用吗?我是使用 $ pip3 install [depemdency] 还是使用 $ sudo apt-get ..?并感谢您的帮助
-
我认为最好的办法是发布您的脚本,其中包含您正在使用的确切依赖项(您可以使用 pip freeze 并将它们保存在 requirements.txt 文件中)以尝试复制。共享有关您的 VM 上使用的映像的更多详细信息也将很有帮助。考虑到这一点,您始终可以尝试在新的 VM 上运行它们。
标签: python cron scheduled-tasks