Python numpy 从1.6更新到1.8
我安装了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 个回答
我猜你的电脑上有两个不同版本的numpy,分别在两个不同的路径里。
/Library/Python/2.7/site-packages
还有
/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python
我的解决办法是把你不想要的那个版本重命名(或者删除掉,可能是旧版本),然后把你想保留的那个(新版本)做一个链接,放回你之前删除numpy文件夹的那个目录里。
你在评论中提到用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的方法有点不太礼貌,所以最好作为最后的手段来使用。
我在 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),可以按照以下步骤操作:
- 使用你喜欢的方法从
/Library/Python/2.7/site-packages
卸载 numpy 包(我用pip uninstall numpy
似乎有效) - 确认
/Library/Python/2.7/site-packages
下确实没有剩下任何 numpy 包 - 使用自带的
/usr/bin/easy_install
重新安装 numpy。不要用其他方法,至少如果你想和苹果自带的 Python 2.7 一起使用 numpy 的话。
另外,正如其他评论者提到的,使用完全不同的 Python 版本(比如 Canopy 或 Anaconda)也应该能解决这个问题。