python - 使用 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
但我似乎完全忽略了这个命令。
我发现了类似的问题,但尝试了所有答案:
很高兴您的建议!
解决方案
尝试使用完整的 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。这就是这里的问题。
推荐阅读
- scala - 如何将返回的查询结果从 Salesforce SOAP API 转换为 Spark Dataframe
- python - 类内的函数未执行
- javascript - 有没有办法检查用户访问的下一个 URL?
- python - Geopandas:如何绘制国家/城市?
- python-3.x - 修剪或剥离行尾或行首字符 Python
- python - 有没有办法改变我的命令来重新格式化我的输出文件?
- c# - SQLite:第一次无法打开数据库,不是第二次?
- c - c程序查看值是否正确
- java - 为什么我不能从服务进入主屏幕
- javascript - 当使用 for 循环生成输入时,通过 Ajax 发送多个表单数据的问题