【问题标题】:Crontab | Missing Python Modulecrontab |缺少 Python 模块
【发布时间】:2014-04-17 15:00:55
【问题描述】:

我对 Unix 和 crontab 非常陌生。我遇到的唯一主要问题是将终端指向我要运行的特定程序的 python 模块。从命令行程序运行良好,但不能从 crontab 中运行。

第一个 cronjob 给我发了一封电子邮件,说 cronjob 正在运行。第二个(createUpdate)运行我构建的脚本,设置为每分钟运行一次。

crontab -l 返回:

*/1 * * * * python /Users/JohnDoe/Desktop/emailalert.py
*/1 * * * * PYTHONPATH =/Library/Frameworks/Python.framework/Versions/Current/lib/python2.7/site-packages; export PYTHONPATH; python /Users/JohnDoe/Desktop/createUpdate.py 

我是否正确构建了 PYTHONPATH?

我应该在 cron 之前打破它吗?

是否需要“导出 PYTHONPATH”?

编辑 我忘了添加错误

/bin/sh: PYTHONPATH: command not found
Traceback (most recent call last):
  File "/Users/JohnDoe/Desktop/createUpdate.py", line 1, in <module>
    import beatbox
ImportError: No module named beatbox

【问题讨论】:

    标签: python crontab


    【解决方案1】:

    正确的方法是

    */1 * * * * PYTHONPATH=/Library/Frameworks/Python.framework/Versions/Current/lib/python2.7/site-packages python /Users/JohnDoe/Desktop/createUpdate.py
    

    请注意变量赋值中的空格。没有分号,也不需要导出变量,因为在命令之前声明它们已经使它们对命令本身处于活动状态。

    【讨论】:

    • 当我使用 sudo crontab 时,缺少一些 python 模块。使用 PYTHONPATH 显示“站点包”目录的路径就可以了。以防万一有人遇到类似的问题。
    【解决方案2】:

    使用

    */1 * * * * PYTHONPATH=/Library/Frameworks/Python.framework/Versions/Current/lib/python2.7/site-packages python /Users/JohnDoe/Desktop/createUpdate.py 
    

    在你的 crontab 中。没有分号,PYTHONPATH 仅适用于 python 的实例和您的脚本。

    (此外,我认为你得到了

    /bin/sh: PYTHONPATH: command not found
    

    错误,因为PYTHONPATH 和等号之间有空格。)

    【讨论】:

      【解决方案3】:

      您不需要导出 PYTHONPATH。如果您全局安装了 beatbox,您应该能够在调用 Python 的同一行(在同一命令中)包含环境设置,如下所示:

      */1 * * * * PYTHONPATH=/Library/Frameworks/Python.framework/Versions/Current/lib/python2.7/site-packages python /Users/JohnDoe/Desktop/createUpdate.py 
      

      另外,请确保变量名、等号和变量值之间没有空格。

      您确实应该使用virtualenv 创建沙盒 Python,因此您不必全局安装外部库。如果您安装 virtualenv 并将依赖项安装到其中,您将能够执行类似的操作

      */1 * * * * /path/to/virtual/env/bin/python /Users/JohnDoe/Desktop/createUpdate.py
      

      不用担心全局依赖。

      这里是 virtualenv 的文档:http://www.virtualenv.org/en/latest/

      【讨论】:

        【解决方案4】:
        */1 * * * * pip install beatbox && python /Users/JohnDoe/Desktop/createUpdate.py 
        

        很难找到可行的解决方案并最终解决了这个问题。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-12-27
          • 2012-09-30
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多