我编写了一个 python 脚本,它可以检查我的工作名册(在 google 表格中),获取一些相关详细信息,将它们放在电子邮件中并发送给我。
当我从 IDLE 手动运行该脚本时,它运行完美。
(我的经验水平允许我编写这个脚本并在日常使用中一般使用 Python,但以下内容对我来说是新的......)
然而,当我尝试安排这项任务时,问题就开始了:
我研究过 crontab(我使用的是 macOS)。我使用在线文章的帮助编写了 crontab,但我从未收到电子邮件。我注意到当我再次打开终端时,我收到一条消息,说我有邮件。我阅读了邮件,其中包含一条错误消息。'....ModuleNotFoundError:没有名为 ezgmail 的模块'。
显然这就是我收不到电子邮件的原因!
每当我手动运行脚本时(即在 IDLE 中打开 python 文件并从那里运行它),它都能完美运行。为什么使用 crontab 运行时会出现“模块未找到”错误?
我希望我在这里提供了足够的细节并正确地解释了我的问题!
感谢您的帮助!
答案1
不清楚这个ezgmail
模块是随操作系统一起提供的,还是后来安装的。根据安装方式,可能是环境差异导致在 IDLE 中运行脚本时可以找到它,而在 crontab 中运行时找不到它。
Python 在列表中指定的目录中查找模块sys.path
,而填充该列表的方法之一是从PYTHONPATH
环境变量中查找。因此,调查问题的一种方法是编写一个非常简单的脚本来查询sys.path
和的值,在 IDLE 和 crontab 中运行它(对于 crontab 情况,您可能需要将值写入文件),然后查找安装的PYTHONPATH
目录。ezgmail
另外,请务必检查哪个用户正在从 crontab 运行脚本。