Python 安装Numpy的变通方法?

Python 安装Numpy的变通方法?,python,numpy,cron,installation,Python,Numpy,Cron,Installation,现在我有一个使用numpy的脚本,我想在服务器上自动运行它。当我在ssh中手动运行它时,它工作正常。但是,当我将其设置为作为cron作业运行时,它找不到numpy。显然,由于共享服务器环境的原因,cron恶魔无论如何都找不到numpy。我联系了服务器主机的技术支持,他们告诉我设置一个vps或是拥有我自己的该死的服务器。有没有办法解决这个问题?也许,通过将某些numpy文件移动到与脚本相同的目录中?如果您在服务器上的某个位置安装了numpy,您可以将其添加到python的导入路径中;在脚本开始时,

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

如果您在服务器上的某个位置安装了numpy,您可以将其添加到python的导入路径中;在脚本开始时,执行以下操作:

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

cronjob在空环境中运行。因此,它要么没有使用与shell相同的python二进制文件,要么有PYTHONPATH集,而在crontab下则没有

您应该运行
env-i HOME=$HOME sh
来了解cronjob的环境。设置环境变量,直到命令起作用,并记录它们

然后,您可以在crontab文件中再次使用env命令进行设置,如:

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

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


以您的身份登录(通过ssh),并说出
哪个python
。这将告诉您python的位置。然后让cron作业执行python解释器来运行脚本,或者
chmod+x
脚本并将路径放入
#

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

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

/usr/bin/env PYTHONPATH=... <then the command to run>
/usr/bin/env PYTHONPATH=。。。
如果您在使用vixie cron的Linux系统上,那么您还可以使用以下行在crontab中指定全局变量

# my environment settings
PYTHONPATH = <path>
SOMETHING_ELSE = blah

<then my normal cron line>
#我的环境设置
蟒蛇=
还有别的事吗

请参见
man-s5crontab

注意,在crontab文件中设置环境变量的能力取决于
cron
的实现。例如,它在Solaris 10上不起作用。env-i命令在确保一切正常方面非常有用,但由于服务器主机只允许我通过联机GUI间接访问crontab文件,因此我无法向其添加任何新行。不过非常感谢,它确实很有帮助。您可以使用env命令向命令的环境中添加内容(这是它的主要用途),例如:
env FOO=bar mycommand
)。这应该给你完全的控制权,即使是GUI限制。也有一些主机提供商对Python的支持感到自豪,也许你应该考虑切换。这不是我的电话,服务器最初并不打算用于我的目的。@ BukZor你是正确的,我想到的是系统crontab,而不是用户的crontab。其他答案都非常有用,但由于我不能直接更改crontab文件,所以我不得不使用这个。非常感谢你。