【问题标题】:Workaround Way To Install Numpy?安装 Numpy 的解决方法?
【发布时间】:2011-09-26 22:11:55
【问题描述】:

现在我有一个使用 numpy 的脚本,我想在服务器上自动运行。当我 ssh 并手动运行它时,它工作正常。但是,当我将它设置为作为 cron 作业运行时,它找不到 numpy.显然由于共享服务器环境,cron 恶魔无论出于何种原因都找不到 numpy。我联系了服务器主机的技术支持,他们告诉我设置一个 vps 或获得我自己的该死的服务器。有没有办法解决这个问题?也许,通过将某些 numpy 文件移动到与脚本相同的目录中?

【问题讨论】:

  • 有些托管服务提供商以 Python 支持而自豪,或许您应该考虑更换。
  • 这不是我的决定,而且服务器最初并不是为了我的目的而使用的。

标签: python numpy cron installation


【解决方案1】:

如果你在服务器某处安装了 numpy,你可以将它添加到 python 的导入路径中;在脚本的开头,执行以下操作:

import sys
sys.path.append("/path/to/numpy")
import numpy

【讨论】:

  • 其他答案都非常有用,但是由于我无法直接更改 crontab 文件,所以我不得不使用这个。非常感谢。
【解决方案2】:

cronjob 在一个空的环境中运行。因此,它要么没有使用与你在 shell 中相同的 python 二进制文件,要么你设置了 PYTHONPATH,它不会在 crontab 下设置。

您应该运行env -i HOME=$HOME sh 以获得cronjob 环境的复本。设置环境变量,直到您的命令有效,并记录它们。

然后您可以在您的 crontab 文件中设置这些,再次使用 env 命令,例如:

* * * * * env PYTHONPATH=/my/pythonpath OTHERVAR=correct-value /path/to/mycommand

【讨论】:

  • 注意,在 crontab 文件中设置环境变量的能力取决于cron 的实现。例如,它不适用于 Solaris 10。
  • 那个 env -i 命令在确保一切正常方面非常有用,但是由于服务器主机只允许我通过其在线 GUI 间接访问 crontab 文件,所以我无法添加任何新的线路。非常感谢,它真的很有帮助。
  • 您可以使用 env 命令将内容添加到您的命令的环境中(这确实是它的主要目的),例如:env FOO=bar mycommand)。这应该让你完全控制,即使有 gui 限制。
【解决方案3】:

cron 守护进程调用的进程有一个最小环境,通常由$HOME$LOGNAME$SHELL 组成。

听起来 numpy 可能在您的 $PYTHONPATH 的某个地方?如果是这样,您将需要在 crontab 行中指定它。比如

/usr/bin/env PYTHONPATH=... <then the command to run>

如果你在使用 vixie cron 的 Linux 系统上,那么你也可以在你的 crontab 中使用诸如

之类的行来指定全局变量
# my environment settings
PYTHONPATH = <path>
SOMETHING_ELSE = blah

<then my normal cron line>

man -s 5 crontab

【讨论】:

    【解决方案4】:

    您的 cron 作业可能正在使用不同的 python 解释器执行。

    以您的身份登录(通过 ssh),然后输入 which python。这会告诉你你的蟒蛇在哪里。然后让你的 cron 作业执行那个 python 解释器来运行你的脚本,或者 chmod +x 你的脚本并将路径放在脚本顶部的 #! 行中。

    【讨论】:

    • @bukzor 你是对的,我想的是系统 crontab 而不是用户的 crontab。固定
    猜你喜欢
    • 1970-01-01
    • 2012-05-15
    • 1970-01-01
    • 2022-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-03
    相关资源
    最近更新 更多