由于导入模块错误,Python sudo cron作业不工作

由于导入模块错误,Python sudo cron作业不工作,python,cron,Python,Cron,我有一个webscraper脚本,当我通过命令行启动时,它可以毫无问题地运行。我创建了一个crontab作业,用于定期运行此脚本: sudo crontab -e 根据syslog消息,脚本已启动,但没有预期的输出,因此我为stdout和stderr消息创建了一个日志文件,并且BeautifulSoup模块导入似乎有问题 import BeautifulSoup ImportError: No module named bs4 你知道根本原因是什么吗?我如何解决 编辑: 我的问题与我的cro

我有一个webscraper脚本,当我通过命令行启动时,它可以毫无问题地运行。我创建了一个crontab作业,用于定期运行此脚本:

sudo crontab -e
根据syslog消息,脚本已启动,但没有预期的输出,因此我为stdout和stderr消息创建了一个日志文件,并且BeautifulSoup模块导入似乎有问题

import BeautifulSoup
ImportError: No module named bs4
你知道根本原因是什么吗?我如何解决

编辑:
我的问题与我的crontab由不同的用户(root)运行有关。所以,正如答案中所建议的,当我将其更改为自己的用户时,问题就解决了

crontab前面的sudo表示root用户运行脚本。未为root用户安装Beauty soup,因此无法找到模块


而是从“sudo crontab-e”中删除该语句,然后运行“crontab-e”。将脚本放在其中将从您的用户帐户运行它,并且应该可以访问Beauty soup模块

crontab前面的sudo意味着root用户运行脚本。未为root用户安装Beauty soup,因此无法找到模块


而是从“sudo crontab-e”中删除该语句,然后运行“crontab-e”。将脚本放入其中将从您的用户帐户运行它,并且应该可以访问Beauty soup模块

对于用于cron作业的每个用户,您应该执行
pip安装库
。因为cron使用用户运行作业的环境。

对于用于cron作业的每个用户,您应该执行
pip安装库。因为cron使用用户运行作业的环境。

如果有必要在crontab中以sudo的形式运行Python脚本,那么应该使用
PYTHONPATH
变量(如Sraw的注释中所述)来增加模块文件的默认搜索路径

首先,通过运行Python(模块成功导入的地方)并检查
sys.path
,确定模块的位置:

import sys
print(sys.path)
列出的路径之一是位置(称之为
location/of/module
)。找到它并将您在
sudo crontab-e
中的条目更改为

PYTHONPATH=/location/of/module python your_script.py

如果需要在crontab中以sudo的形式运行Python脚本,那么应该使用
PYTHONPATH
变量(如Sraw的注释中所述)来增加模块文件的默认搜索路径

首先,通过运行Python(模块成功导入的地方)并检查
sys.path
,确定模块的位置:

import sys
print(sys.path)
列出的路径之一是位置(称之为
location/of/module
)。找到它并将您在
sudo crontab-e
中的条目更改为

PYTHONPATH=/location/of/module python your_script.py

您可以为root用户安装beautifulsoup或创建shell脚本。在环境变量
PYTHONPATH
中添加python库,然后运行脚本。在此处检查我的答案可能是重复的,您可以为root用户安装beautifulsoup或创建shell脚本。将python库添加到环境变量
PYTHONPATH
中,然后运行脚本。在此处检查我的答案可能是重复的