当 运行 一个 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
。
我刚刚编写了一个 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
。