有本地numpy覆盖全局

时间:2012-02-23 18:53:26

标签: python numpy centos

我正在使用我没有管理权限的服务器,我需要使用最新版本的numpy。系统管理员坚持认为他无法将全局numpy更新到最新版本,因此我必须在本地安装它。

我可以毫无困难地做到这一点,但是我如何确保“import numpy”导致导入较新的本地安装,而不是旧的全局版本?我可以调整我的PYTHONPATH,但我也想使用一些全局导入,所以我不能排除所有的全局包。

顺便说一下,我在CentOS 6上。

谢谢!

4 个答案:

答案 0 :(得分:2)

最好的解决方案是安装和使用virtualenv,正是出于这个原因。

答案 1 :(得分:1)

Python按顺序搜索路径,只需将您安装NumPy的目录放在路径中。

您可以查看numpy.version.version以确保获得所需的版本。

答案 2 :(得分:1)

作为使用virtualenv的替代方法,您可以使用PYTHONPATH或修改sys.path

PYTHONPATH可以放在您的~/.bash_profile中(或者您使用的shell的任何适当的启动文件)。或者,在系统python之前的PATH中的python包装脚本中,例如:

$ cat ~/bin/python # assuming ~/bin is in PATH before /usr/bin
#!/bin/bash
PYTHONPATH=<path-to-your-libs> /usr/bin/python

或者,人们可能希望明确并命令Python仅在被要求时使用自定义库。在这种情况下,可以直接修改sys.path变量,例如:

import sys, os
sys.path.insert(0, os.path.expanduser("~/my_python_libs"))
import numpy # searches for numpy first in "~/my_python_libs"

将上面修改python模块搜索路径的代码放入可重用模块并导入该模块可能很方便,这样在更改路径时,只需修改此模块。

有关详细信息,请参阅6.1.2. The Module Search Path

就个人而言,我从源代码编译最新的Python以及我使用的所有第三方库。这样可以轻松切换到最新的库,而不依赖于Linux发行版(Linux发行版,尤其是企业发行版,无法跟上Python库更新)。

答案 3 :(得分:0)

最简单的方法是在构建和安装numpy时使​​用--user选项

$ python setup.py install --user

$ pip install --user numpy

这不需要管理权限,也不需要篡改您的sys.path

virtualenv也非常有用,但除非你想为不同的应用程序使用不同版本的numpy,否则没有必要。