首页 > 解决方案 > 使用 Crontab 的 ImportError

问题描述

我正在尝试通过 Mac 上的 crontab 自动运行 python 脚本。

25 12 * * * sh  /Users/simonwe/PycharmProjects/crawlerzon/crawler.sh

脚本看起来像这样

#!/bin/sh

export PYTHONPATH=/Users/simonwe/opt/anaconda3/bin/python
python /Users/simonwe/PycharmProjects/crawlerzon/crawler.py

当我在终端中手动运行它时,一切正常,但在 crontab 中它给了我这个错误:

From simonwe@Simons-iMac.local  Wed Aug 19 12:25:02 2020
X-Original-To: simonwe
Delivered-To: simonwe@Simons-iMac.local
From: simonwe@Simons-iMac.local (Cron Daemon)
To: simonwe@Simons-iMac.local
Subject: Cron <simonwe@Simons-iMac> sh  /Users/simonwe/PycharmProjects/crawlerzon/crawler.sh
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=simonwe>
X-Cron-Env: <USER=simonwe>
Date: Wed, 19 Aug 2020 12:25:01 +0200 (CEST)

Traceback (most recent call last):
  File "/Users/simonwe/PycharmProjects/crawlerzon/crawler.py", line 4, in <module>
    import requests
ModuleNotFoundError: No module named 'requests'

我还尝试运行 .py 文件,指定我使用的解释器的路径。

00 13 * * * /Users/simonwe/opt/anaconda3/bin/python /Users/simonwe/PycharmProjects/crawlerzon/crawler.py 

但我似乎完全忽略了这个命令。

我发现了类似的问题,但尝试了所有答案:

很高兴您的建议!

标签: pythonshellcronshimporterror

解决方案


尝试使用完整的 python 路径。

/usr/bin/python /Users/simonwe/PycharmProjects/crawlerzon/crawler.py

找出python在哪里 where python找到你的python。

但是,我怀疑你有多个蟒蛇。你必须指向正确的。

如果您仍然不确定,只需列出您使用的每个 python 的 pythons 包。

python -c 'help("modules")'

然后用正确的运行你的python。

因为正如我在上面看到的,你安装了一个默认的 python和一个anaconda python。因此,默认情况下,您的代码将默认指向 Linux python2.7。这就是这里的问题。


推荐阅读