当 运行 一个 python 脚本作为 crontab 时,如何启用本地模块?

How do I enable local modules when running a python script as a cron tab?

我刚刚编写了一个 python 小脚本,它使用 BeautifulSoup 从网站中提取一些信息。

只要脚本是来自命令行的 运行,一切 运行 都很好。然而 运行 作为一个 crontab,服务器 returns 我这个错误:

Traceback (most recent call last): File "/home/ws/undwv/mindfactory.py", line 7, in from bs4 import BeautifulSoup ImportError: No module named bs4

由于我对服务器没有任何根访问权限,因此 BeautifulSoup 安装在用户目录中:$HOME/local/lib/python2.7/site-packages

我想 cron 选项卡不会在用户目录中查找模块。有什么解决办法吗?

只需将文件夹添加到脚本开头的 python 路径:

import sys
sys.path.append("$HOME/local/lib/python2.7/site-packages")

$HOME 更改为正确的值。

~/.local 路径(由 pip install --user 填充)自动可用,即,如果 cron 作业属于相应的用户就足够了。

要配置任意路径,您可以在 crontab 中使用 PYTHONPATH envvar。不要在脚本中破坏 sys.path