Python numpy 从1.6更新到1.8

4 投票
3 回答
7407 浏览
提问于 2025-04-18 01:01

我安装了numpy 1.8版本。但是当我打印 numpy.__version__ 时,它显示的是1.6。

我需要做什么才能让Python知道numpy在哪里?我在使用Mac(10.9),Python版本是2.7.6。

编辑:

我尝试删除所有的numpy版本。我用命令pip uninstall numpy卸载了它。然后我输入:

python
import numpy
print numpy.version

结果显示的是1.6.2。

看来我无法删除numpy。

3 个回答

2

我猜你的电脑上有两个不同版本的numpy,分别在两个不同的路径里。

/Library/Python/2.7/site-packages

还有

/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python

我的解决办法是把你不想要的那个版本重命名(或者删除掉,可能是旧版本),然后把你想保留的那个(新版本)做一个链接,放回你之前删除numpy文件夹的那个目录里。

2

你在评论中提到用pip和操作系统的包管理器卸载都没成功。如果你之前用过easy_install,可以试试用easy_install -m来卸载。如果这些方法都不行,你可以手动删除文件(导入的模块是从sys.path中查找的,所以在这个列表中找到的第一个版本就是被导入的版本)。

打开交互式的Python解释器,检查文件的实际位置:

>>> import numpy
>>> numpy.__file__
'/home/wim/.virtualenvs/xyz/local/lib/python2.7/site-packages/numpy/__init__.pyc'

这样你就能知道需要删除哪个目录,以防止不想要的版本被导入。

这种手动“卸载”numpy的方法有点不太礼貌,所以最好作为最后的手段来使用。

8

我在 Mac OS X 10.9.4 上运行 Python 2.7.5,发现苹果自带的 Python 在处理升级包安装时出现了一些奇怪的bug。

具体来说,当我执行:

sudo pip uninstall numpy

时,它会把安装在

/Library/Python/2.7/site-packages

下的 numpy 版本给删掉。

不过,这并不意味着系统里完全没有 numpy 了!其实还有一套“备份”版本的 Python 包,安装在:

/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python

当我使用苹果系统自带的 /usr/bin/easy_install 工具安装 numpy 时,最新版本(目前是 1.9.0)会被放到 Library/Python/2.7/site-packages 里,这样一来,加载模块时就会优先使用这个最新版本,所以当我在 Python 中执行 import numpy 时,会加载到最新的 numpy 版本。然而——这就是那个奇怪的、明显有问题的行为了!当我卸载 numpy 后,如果我用 pip 或者直接用以下命令重新安装:

sudo python setup.py install

sourceforge 下载的 .tar.gz 版本,升级后的安装居然在 Python 模块加载路径中没有优先级,尽管它也安装在 /Library/Python/2.7/site-packages 下!

无论如何,要解决这个问题(或者说,至少在 Mac OS X 上规避这个bug),可以按照以下步骤操作:

  1. 使用你喜欢的方法从 /Library/Python/2.7/site-packages 卸载 numpy 包(我用 pip uninstall numpy 似乎有效)
  2. 确认 /Library/Python/2.7/site-packages 下确实没有剩下任何 numpy 包
  3. 使用自带的 /usr/bin/easy_install 重新安装 numpy。不要用其他方法,至少如果你想和苹果自带的 Python 2.7 一起使用 numpy 的话。

另外,正如其他评论者提到的,使用完全不同的 Python 版本(比如 Canopy 或 Anaconda)也应该能解决这个问题。

撰写回答