Scipy错误:numpy.dtype大小已更改,可能表示二进制不兼容(以及相关的奇怪行为)

2024-05-14 10:47:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在OSX10.9.4上安装numpy/scipy/scikit learn,并得到关于“numpy.dtype size changed,may indicate binary uncompatibility”的错误信息。

以下是我为构建回购协议所做的工作:

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

很高兴根据要求提供更多信息!


Tags: inpynumpylibpackageslinesitevirtualenvs
1条回答
网友
1楼 · 发布于 2024-05-14 10:47:58

你是如何建立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

相关问题 更多 >

    热门问题