我正在 OS X 10.9.4 上安装 numpy/scipy/scikit-learn,并且收到有关“numpy.dtype 大小已更改,可能表明二进制不兼容”的错误。
这是我构建存储库所做的事情:
mkvirtualenv thm
workon thm
pip install numpy scipy pandas ipython # and some other stuff
cd /path/to/our/repo
# run tests
这是相关警告的回溯摘录(由于我们在测试开始时使用
warnings.simplefilter('error')
,所以变成了错误):
======================================================================
ERROR: Failure: RuntimeWarning (numpy.dtype size changed, may indicate binary in
compatibility)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/Users/ben/.virtualenvs/thm/lib/python2.7/site-packages/nose/loader.py",
line 414, in loadTestsFromName
addr.filename, addr.module)
File "/Users/ben/.virtualenvs/thm/lib/python2.7/site-packages/nose/importer.py
", line 47, in importFromPath
return self.importFromDir(dir_path, fqname)
File "/Users/ben/.virtualenvs/thm/lib/python2.7/site-packages/nose/importer.py
", line 94, in importFromDir
mod = load_module(part_fqname, fh, filename, desc)
File "/Users/ben/code/thm/alpha/prosper/base/stats/test_auc.py", line 3, in <m
odule>
import sklearn.metrics
File "/Users/ben/.virtualenvs/thm/lib/python2.7/site-packages/sklearn/metrics/
__init__.py", line 6, in <module>
from .metrics import (accuracy_score,
File "/Users/ben/.virtualenvs/thm/lib/python2.7/site-packages/sklearn/metrics/metrics.py", line 27, in <module>
from scipy.spatial.distance import hamming as sp_hamming
File "/Users/ben/.virtualenvs/thm/lib/python2.7/site-packages/scipy/spatial/__init__.py", line 90, in <module>
from .ckdtree import *
File "__init__.pxd", line 155, in init scipy.spatial.ckdtree (scipy/spatial/ckdtree.c:20570)
RuntimeWarning: numpy.dtype size changed, may indicate binary incompatibility
我被告知此警告是由于 scipy 是针对与安装版本不同的 numpy 版本进行编译而引起的。然而,我用 pip 安装了它们,我认为这是一种非常标准的方式,所以我想这应该不是问题。
奇怪的是,尽管将整个测试套件作为一个整体运行(通过
python -m unittest discover
)会出现这些错误,但运行单个测试(通过python -m unittest <module>
)却可以正常工作。
根据测试,相关版本信息如下:
numpy version 1.9.0 (rev 07601a64cdfeb1c0247bde1294ad6380413cab66)
scipy version 0.14.0 (built against numpy 1.9.0)
sklearn version 0.15.2
pandas version 0.14.1
很高兴根据要求提供更多信息!
你是如何构建 sklearn 0.14.1 的?您是否使用与 scipy 相同版本的 numpy 构建它?
最新版本的 scikit-learn、scipy 和 numpy 都有预构建的包。特别是 scikit-learn 0.15.2 应该与 numpy 1.7+ 二进制兼容。我认为 scipy 0.14.0 也是如此,但你说你自己从源代码构建了它,这不是 pip 默认应该做的事情(它应该只安装预构建的 whl 包)。
编辑:你尝试过这样做吗:
pip install -U scipy scikit-learn pandas
确保您对这些软件包使用最新稳定版本的whl?
编辑:下面的评论具有有效的实际答案,大概就是这个答案被接受的原因。 即:
pip uninstall -y scipy scikit-learn
pip install --no-binary scipy scikit-learn