【问题标题】:How do I enable local modules when running a python script as a cron tab?将 python 脚本作为 cron 选项卡运行时如何启用本地模块?
【发布时间】:2015-07-02 12:52:29
【问题描述】:

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

只要从命令行运行脚本,一切都会运行良好。但是作为 crontab 运行,服务器返回给我这个错误:

Traceback(最近一次调用最后一次): 文件“/home/ws/undwv/mindfactory.py”,第 7 行,在 从 bs4 导入 BeautifulSoup ImportError: 没有名为 bs4 的模块

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

我想 cron 选项卡不会在用户目录中查找模块。任何想法如何解决这个问题?

【问题讨论】:

  • 您是否添加了 crontab 文件的路径?

标签: python cron beautifulsoup crontab


【解决方案1】:

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

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

$HOME 更改为正确的值。

【讨论】:

  • 几乎正确。必须将路径放在引号中,并且必须为 site-packages 文件夹内的 *.egg 文件夹指定路径。现在工作:-)
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-16
    • 2013-08-12
    • 2016-09-07
    • 1970-01-01
    相关资源
    最近更新 更多