安装Numpy的变通方法?
现在我有一个脚本,它使用了numpy库,我想在服务器上自动运行。当我通过ssh登录并手动运行它时,一切都很好。但是,当我把它设置为定时任务(cron job)时,它找不到numpy。显然是因为共享服务器的环境,定时任务的程序出于某种原因找不到numpy。我联系了服务器提供商的技术支持,他们告诉我让我自己设置一个虚拟专用服务器(VPS)或者干脆自己买台服务器。有没有什么办法可以绕过这个问题呢?比如,把某些numpy的文件移动到和脚本同一个目录里?
4 个回答
1
你的定时任务可能是用不同的Python解释器在运行。
你可以通过SSH登录到你的服务器,然后输入 which python
。这个命令会告诉你Python的安装位置。接下来,让你的定时任务使用这个Python解释器来运行你的脚本,或者给你的脚本加上可执行权限(用 chmod +x
),并在脚本顶部加上一个 #!
的路径行。
2
定时任务(cronjob)在一个空的环境中运行。这意味着它可能使用的不是你在命令行中使用的同一个Python程序,或者你设置的PYTHONPATH在定时任务中是没有的。
你可以运行 env -i HOME=$HOME sh
来模拟定时任务的环境。然后逐步设置环境变量,直到你的命令可以正常工作,并把这些变量记录下来。
接着,你可以在你的定时任务文件中设置这些变量,同样使用env命令,像这样:
* * * * * env PYTHONPATH=/my/pythonpath OTHERVAR=correct-value /path/to/mycommand
2
如果你的服务器上已经安装了numpy这个库,你可以把它添加到Python的导入路径中。在你脚本的开头,可以这样做:
import sys
sys.path.append("/path/to/numpy")
import numpy