python - tutorial - ValueError: numpy.dtype tiene el tamaño incorrecto, intente recompilar
numpy tutorial español pdf (12)
(para ampliar un poco en mi comentario)
Los desarrolladores de Numpy siguen en general una política de mantener una interfaz binaria compatible con versiones anteriores (ABI). Sin embargo, el ABI no es compatible con versiones anteriores.
Lo que eso significa:
Un paquete, que usa numpy en una extensión compilada, se compila con una versión específica de numpy. La versión futura de numpy será compatible con la extensión compilada del paquete (para la excepción, ver más abajo). Los distribuidores de esos otros paquetes no necesitan recompilar su paquete contra una versión más nueva de numpy y los usuarios no necesitan actualizar estos otros paquetes, cuando los usuarios actualizan a una versión más nueva de numpy.
Sin embargo, esto no va en la otra dirección. Si un paquete se compila contra una versión numpy específica, digamos 1.7, entonces no hay garantía de que los binarios de ese paquete funcionen con versiones numpy más antiguas, digamos 1.6, y muy a menudo o la mayoría de las veces no lo harán.
La distribución binaria de paquetes como pandas y modelos de estadísticas, compilados contra una versión reciente de numpy, no funcionará cuando se instale una versión anterior de numpy. Algunos paquetes, por ejemplo matplotlib, si mal no recuerdo, compilan sus extensiones con la versión numpy más antigua que admiten. En este caso, los usuarios con la misma versión anterior o más reciente de numpy pueden usar esos binarios.
El mensaje de error en la pregunta es un resultado típico de incompatibilidades binarias.
La solución es obtener una versión compatible binaria, actualizando numpy a al menos la versión contra la que se compilaron los pandas o modelos de estadísticas, o recompilando pandas y modelos de estadísticas contra la versión anterior de numpy que ya está instalada.
Rompiendo la compatibilidad hacia atrás ABI:
A veces, las mejoras o refactorizaciones en numpy rompen la compatibilidad con versiones anteriores de ABI. Esto sucedió (involuntariamente) con numpy 1.4.0. Como consecuencia, los usuarios que actualizaron numpy a 1.4.0, tenían incompatibilidades binarias con todos los demás paquetes compilados, que fueron compilados contra una versión anterior de numpy. Esto requiere que todos los paquetes con extensiones binarias que usen numpy tengan que recompilarse para que funcionen con la versión incompatible ABI.
Acabo de instalar pandas y el paquete statsmodels en mi Python 2.7. Cuando probé "importar pandas como pd", aparece este mensaje de error. ¿Alguien puede ayudar? ¡¡¡Gracias!!!
numpy.dtype has the wrong size, try recompiling
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:/analytics/ext/python27/lib/site-packages/statsmodels-0.5.0-py2.7-win32.egg/statsmodels/formula/__init__.py",
line 4, in <module>
from formulatools import handle_formula_data
File "C:/analytics/ext/python27/lib/site-packages/statsmodels-0.5.0-py2.7-win32.egg/statsmodels/formula/formulatools.p
y", line 1, in <module>
import statsmodels.tools.data as data_util
File "C:/analytics/ext/python27/lib/site-packages/statsmodels-0.5.0-py2.7-win32.egg/statsmodels/tools/__init__.py", li
ne 1, in <module>
from tools import add_constant, categorical
File "C:/analytics/ext/python27/lib/site-packages/statsmodels-0.5.0-py2.7-win32.egg/statsmodels/tools/tools.py", line
14, in <module>
from pandas import DataFrame
File "C:/analytics/ext/python27/lib/site-packages/pandas/__init__.py", line 6, in <module>
from . import hashtable, tslib, lib
File "numpy.pxd", line 157, in init pandas.tslib (pandas/tslib.c:49133)
ValueError: numpy.dtype has the wrong size, try recompiling
Acabo de conocer este problema de ''ValueError'' y lo he abordado. Definitivamente hay algo mal con el paquete numpy.
Pero cuando trato de pip install --upgrade numpy
falló, así que desinstalo y descargo el archivo numpy.zip
más numpy.zip
. A continuación, descomprímalo manualmente y python setup.py install
.
Afortunadamente, ¡funciona!
Como here , para mí solo sudo pip install pandas==0.13.1
trabajado
Como dijo @ user333700, las versiones requeridas de las bibliotecas pueden no encontrarse entre sí. Obtienes una biblioteca como dependencia de otra. Luego, sin saber que ya estaba instalado como dependencia, necesita esa biblioteca específica e instala una versión. Con tales formas, las dependencias pueden arruinarse.
Viví un caso así y busqué una solución. Encontrado esto: https://.com/a/12975518/1694344
Tenía dos versiones diferentes para el archivo egg-info y el nombre de la carpeta numpy:
drwxr-xr-x. 19 root root 4096 Sep 25 15:00 numpy
drwxr-xr-x. 2 root root 4096 Sep 22 11:25 numpy-1.13.1.dist-info
-rw-r--r--. 1 root root 1630 Nov 20 2015 numpy-1.7.1-py2.7.egg-info
Los eliminé todos y reinstalé numpy con pip.
Descubrí que es una versión simple que está desactualizada o no coincide y se solucionó con:
pip install --upgrade numpy
pip install --upgrade scipy
pip install --upgrade pandas
O podría funcionar con un trazador de líneas:
pip install --upgrade numpy scipy pandas
El problema que resolví en Webfaction era la vieja biblioteca numpy (1.5) que estaba en conflicto con mi versión nueva.
pip instala pandas
instalación en .virtualenv.
El problema fue resuelto después de que pip instalé pandas fuera del entorno virtual. La idea surgió de la discusión en https://github.com/pydata/pandas/issues/3711 , gracias, cpcloud !
En mi caso, había instalado pandas-0.10.0.win-amd64-py2.7 pero estaba verificando si se había corregido un error en una versión más reciente de pandas. Así que hice un easy_install -U para forzar la actualización, pero luego obtuve el error anterior debido a algunas incompatibilidades con numpy, etc ... cuando lo hice
import pandas
Para solucionarlo, acabo de reinstalar el binario pandas-0.10.0.win-amd64-py2.7 y todo funciona. No vi esta respuesta (sugiere usar pip) que me pudo haber ayudado (aunque no estoy seguro) Instalar una versión en particular con easy_install
También esto destaca por qué uno debería usar virtualenv (que yo no era).
Hay casos en los que desea mantener una versión específica de NumPy y la opción de actualización mencionada aquí no funcionará. Un ejemplo que se me ocurrió fue la distribución de Python preinstalada con ArcGIS. Para que ArcPy funcione en ArcGIS 10.5.1, esa distribución necesita ser Python 2.7.12 con NumPy 1.9.3 y cualquier otra versión de NumPy probablemente cause problemas con su funcionalidad de ArcPy.
Lo que puede hacer con este caso es intentar instalar una versión anterior específica de la biblioteca problemática de terceros que se supone que es compatible con la versión anterior de NumPy que tiene ArcGIS.
Por ejemplo, scikit-learn 0.19.1 NO funcionaría con NumPy 1.9.3 y daría como resultado el mismo error que usted mencionó. Sin embargo, scikit-learn 0.15 funciona bien. Puede probar diferentes versiones para encontrar la que funciona. Solo menciona el número de versión a través de pip:
python -m pip install scikit-learn==0.15
Para mí (Mac OS X Mavericks) funcionó para instalar la versión de python2.6:
sudo port install py26-scikit-learn
entonces corre:
python2.6 myscript.py
Para mí (Mac OS X Maverics, Python 2.7)
easy_install --upgrade numpy
ayudado. Después de esto, puede instalar paquetes actualizados pandas , scikit-learn , etc. usando pip :
pip install pandas
También encuentro este error cuando uso pandas para acceder a MYSQL. Este mensaje de error indica un problema binario compatible y se puede resolver con la última versión de pandas y paquete numpy. Estos son mis pasos para resolver este problema, y funciona bien en mi Ubuntu 12.04:
cd /tmp/
wget https://pypi.python.org/packages/source/p/pandas/pandas-0.12.0.tar.gz
tar xzvf pandas-0.12.0.tar.gz
cd pandas-0.12.0
easy_install --upgrade numpy
Tuve un error similar con otra biblioteca y me di cuenta de que tenía varias versiones de numpy instaladas en mi sistema. La solución para mí fue editar mi PYTHONPATH y colocar los paquetes de sitio que contenían la última versión de numpy en la primera posición.