【发布时间】:2018-06-05 22:29:14
【问题描述】:
我编写了一个脚本来抓取一些我希望每 10 分钟运行一次的网络数据。当我从命令行执行此脚本时,该脚本运行良好,但当我尝试使用 cronjob 每 10 分钟运行一次时出现错误,因为它无法导入 bs4'。我收到此错误:
No module named bs4
我的 crontab:
*/10 * * * * PYTHONPATH=/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages python /Users/{username}/Documents/scripts/cot.py
我通过使用以下命令查找“bs4”的下载位置获得了 PYTHONPATH 变量:
python -c 'import bs4; print(bs4.__file__)'
在 /var/{username}/mail 中输出:
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME={username}>
X-Cron-Env: <USER={username}>
X-Cron-Env: <HOME=/Users/{username}>
Message-Id: <20171223194001.0783F8639E1@mbp-0500.localdomain>
Date: Sat, 23 Dec 2017 13:40:00 -0600 (CST)
Traceback (most recent call last):
File "/Users/{username}/Documents/scripts/cot.py", line 3, in <module>
from bs4 import BeautifulSoup
ImportError: No module named bs4
【问题讨论】:
-
为什么不在 cron instaed 中运行
.py呢?python /route/to/script.py -
我认为这就是我正在做的事情。你能详细说明一下吗?
-
我的意思是,您是否尝试仅使用
python而不使用完整路径来运行它?如果它在命令行中工作,它应该工作@cron。另外,你没有在 virtualenv 中安装BeautifulSoup,对吧? -
是的,我可以使用 python 在终端中运行它,然后使用路径。不在虚拟环境中。
-
打印
sys.path以查看python用于查找模块的路径 - 即。import sys ; print('\n'.join(sys.path))
标签: python cron beautifulsoup