Scipy erreur: numpy.dtype de changement de la taille, peut indiquer incompatibilité binaire (associée à un comportement étrange)
Je suis d'installer numpy/scipy/scikit-learn sur OS X 10.9.4, et j'obtiens des erreurs à propos de "numpy.dtype de changement de la taille, peut indiquer incompatibilité binaire".
Voici ce que j'ai fait pour construire le repo:
mkvirtualenv thm
workon thm
pip install numpy scipy pandas ipython # and some other stuff
cd /path/to/our/repo
# run tests
Voici un traceback extrait d'un avertissement (transformé en une erreur parce que nous utilisons warnings.simplefilter('error')
au début de nos tests):
======================================================================
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
Je me suis dit que cet avertissement est causée par scipy être compilé avec une version différente de numpy que l'un d'installé. Cependant, j'ai installé tous avec pip, dans ce que je pensais était une jolie façon standard, de sorte que cela ne devrait pas être un problème, je pense.
Bizarrement, bien que l'exécution de l'ensemble de notre suite de test dans son ensemble (via python -m unittest discover
) donne à ces erreurs, l'exécution de tests individuels (via python -m unittest <module>
) fonctionne très bien.
Selon les tests, voici quelques infos de version:
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
Heureux de vous fournir plus d'infos sur demande!
OriginalL'auteur Ben Kuhn | 2014-09-09
Vous devez vous connecter pour publier un commentaire.
Comment avez-vous construit sklearn 0.14.1? Avez-vous le construire avec la même version de numpy comme vous l'avez fait pour scipy?
Les versions récentes de scikit-learn, scipy et numpy ont prédéfinis-paquets. En particulier, scikit-learn 0.15.2 doit être binaire compatible avec numpy 1.7+. Je pense que la même chose est vraie avec scipy 0.14.0 mais vous avez dit que vous avez construit vous-même à partir de la source, ce qui n'est pas ce que le pep doit faire par défaut (il faut juste installer le préconstruit de la whl).
Modifier: avez-vous essayé de faire:
à assurez-vous que vous utilisez les dernières versions stables de la whl pour ces paquets?
Modifier: Les commentaires ci-dessous est la réponse réelle qui fonctionne et qui est probablement pourquoi cette réponse a été acceptée. À savoir:
C'est bizarre, je suis en cours d'exécution exactement la même configuration et je ne peux pas reproduire le problème que vous signalez. numpy 1.9.0 devrait être ABI compatible avec les versions précédentes. De toute façon, vous pouvez utiliser:
pip uninstall -y scipy scikit-learn && pip install –no-use-wheel scipy scikit-learn
à re-construire scikit-learn et scipy à partir de la source au lieu d'utiliser les roues, mais ils doivent travailler avec la nouvelle version de numpy.Je viens de construire
scipy==0.14.0
contrenumpy==1.9.0
tout en utilisant la whl paquet pourscikit-learn==0.15.2
et je peux courirpython -c "from sklearn.metrics import *"
sans aucun avertissement."Mon système numpy est v1.6.2, donc c'est peut-être la liaison en quelque part, il ne devrait pas?": c'est bizarre, scipy et scikit-learn doit construire contre numpy installé dans votre active python
site-packages
, n'importe quel système lib à partir d'un autre interpréteur python.Pour info,
--no-use-wheel
est obsolète et sera supprimée dans le futur. Veuillez utiliser--no-binary
à la place.OriginalL'auteur ogrisel