我使用的服务器,我没有管理权限,我需要使用最新版本的numpy。系统管理员坚称他不能将全局numpy更新到最新版本,所以我必须在本地安装它。有本地numpy覆盖全球
我可以做到这一点没有问题,但我怎样才能确保导入numpy导致新的本地安装导入,而不是旧的全球版本?我可以调整我的PYTHONPATH,但我也希望使用一些全球进口,所以我不能排除所有的全球包裹。顺便说一下,我在CentOS 6上。
谢谢!
我使用的服务器,我没有管理权限,我需要使用最新版本的numpy。系统管理员坚称他不能将全局numpy更新到最新版本,所以我必须在本地安装它。有本地numpy覆盖全球
我可以做到这一点没有问题,但我怎样才能确保导入numpy导致新的本地安装导入,而不是旧的全球版本?我可以调整我的PYTHONPATH,但我也希望使用一些全球进口,所以我不能排除所有的全球包裹。顺便说一下,我在CentOS 6上。
谢谢!
Python依次搜索路径,,因此只需将安装NumPy的目录放在路径中即可。
你可以检查numpy.version.version
以确保你得到你想要的版本。
最好的解决方案是安装和使用virtualenv,这正是存在的原因。
作为使用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库更新)。
要做到这一点最简单的方法是使用--user
选项,当你构建和安装numpy的
$ python setup.py install --user
或
$ pip install --user numpy
这并不需要管理员权限,而且也没有必要篡改与您的sys.path
virtualenv
也是非常有用的,但没有必要,除非你想使用dif不同版本的numpy适用于不同的应用程序。
谢谢,这是一个很好的解决方案!我不需要这些细节,但kindall的答案要容易得多。 – Doa 2012-02-23 20:05:10