Acabo de instalar el paquete pandas y statsmodels en mi python 2.7. Cuando intenté "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
python
numpy
installation
pandas
statsmodels
Ámbar chen
fuente
fuente
Respuestas:
(ampliar un poco mi comentario) a.
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 posteriores.
Que significa eso:
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 una excepción, consulte a continuación). Los distribuidores de esos otros paquetes no necesitan recompilar su paquete con una versión más reciente 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 con una versión numérica 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 statsmodels, que se compilan con 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 antigua 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 binaria compatible, ya sea actualizando numpy a al menos la versión con la que se compilaron pandas o statsmodels, o recompilar pandas y statsmodels con la versión anterior de numpy que ya está instalada.
Rompiendo la compatibilidad con versiones anteriores de ABI:
A veces, las mejoras o refactorizaciones en numpy rompen la compatibilidad con versiones anteriores de ABI. Esto sucedió (sin querer) 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 se compilaron con una versión anterior de numpy. Esto requiere que todos los paquetes con extensiones binarias que usan numpy se recompilen para que funcionen con la versión incompatible con ABI.
fuente
Para mí (Mac OS X Maverics, Python 2.7)
ayudado. Después de esto, puede instalar paquetes actualizados pandas , scikit-learn , etc.usando pip :
fuente
Descubrí que era una versión simple que estaba desactualizada o no coincidía y se solucionó con:
O podría funcionar con el delineador único:
fuente
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 poner los paquetes del sitio que contenían la última versión de numpy en primera posición.
fuente
Como aquí , para mí solo
sudo pip install pandas==0.13.1
funcionófuente
También encuentro este error cuando uso pandas para acceder a MYSQL. Este mensaje de error indica un problema de compatibilidad binaria y se puede resolver utilizando la última versión de pandas y el 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
fuente
File "numpy/core/setup.py", line 654, in get_mathlib_info RuntimeError: Broken toolchain: cannot link a simple C program
En mi caso, había instalado pandas-0.10.0.win-amd64-py2.7 pero estaba verificando si se había solucionado 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 puede haberme ayudado (aunque no estoy seguro) a instalar una versión particular con easy_install
También esto destaca por qué uno debería usar virtualenv (que yo no era).
fuente
Para mí (Mac OS X Mavericks) funcionó instalar la versión para python2.6:
entonces corre:
python2.6 myscript.py
fuente
El problema que resolví en Webfaction fue la antigua biblioteca numpy (1.5) que estaba en conflicto con mi nueva
instalación en .virtualenv.
El problema se resolvió 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 !
fuente
Acabo de encontrarme con este problema de "ValueError" y lo he abordado. Definitivamente hay algo mal con el paquete numpy.
Pero cuando intento
pip install --upgrade numpy
fallar, desinstalo y descargo elnumpy.zip
archivo más nuevo . Luego descomprímalo manualmente ypython setup.py install
lo.¡Por suerte, funciona!
fuente
sudo pip install --upgrade numpy
y funcionó.Como dijo @ user333700, las versiones requeridas de las bibliotecas pueden no coincidir 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 estropearse.
Viví un caso así y busqué una solución. Encontré esto: https://stackoverflow.com/a/12975518/1694344
Tenía dos versiones diferentes para el archivo de información del huevo y el nombre de la carpeta de 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.
fuente
Tuve un problema similar y simplemente reinstalar usando
pip install ...
como se sugirió en comentarios anteriores no funcionó.Lo que funcionó para mí fue reinstalar con la bandera agregada
pip install --no-cache-dir ...
, parece que había una versión numpy incompatible en algún lugar del caché.fuente
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 debe ser Python 2.7.12 con NumPy 1.9.3 y cualquier otra versión de NumPy probablemente causará problemas con la funcionalidad de ArcPy.
Lo que puede hacer con este caso es intentar instalar una versión anterior específica de la biblioteca de terceros problemática 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 mencionaste. Sin embargo, scikit-learn 0.15 funciona bien. Puede probar diferentes versiones para encontrar la que funcione. Solo menciona el número de versión a través de pip:
python -m pip install scikit-learn==0.15
fuente