Я только что установил пакет pandas и statsmodels на свой python 2.7. Когда я попробовал «импортировать pandas как pd», появляется это сообщение об ошибке. Кто-нибудь может помочь? Благодарность!!!
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
Эмбер Чен
источник
источник
Ответы:
(чтобы немного расширить мой комментарий)
Разработчики Numpy в целом придерживаются политики сохранения обратно совместимого двоичного интерфейса (ABI). Однако ABI не поддерживает прямую совместимость.
Что это значит:
Пакет, который использует numpy в скомпилированном расширении, компилируется для конкретной версии numpy. Будущая версия numpy будет совместима с скомпилированным расширением пакета (см. Исключения ниже). Распространителям этих других пакетов не нужно перекомпилировать свой пакет для более новых версий numpy, и пользователям не нужно обновлять эти другие пакеты, когда пользователи обновляются до более новой версии numpy.
Однако в обратном направлении дело не идет. Если пакет скомпилирован для конкретной версии numpy, скажем 1.7, тогда нет гарантии, что двоичные файлы этого пакета будут работать со старыми версиями numpy, скажем 1.6, и очень часто или большую часть времени они не будут.
Бинарное распространение пакетов, таких как pandas и statsmodels, которые скомпилированы с использованием последней версии numpy, не будет работать, если установлена более старая версия numpy. Некоторые пакеты, например matplotlib, если я правильно помню, компилируют свои расширения против самой старой версии numpy, которую они поддерживают. В этом случае пользователи с той же старой или любой более новой версией numpy могут использовать эти двоичные файлы.
Сообщение об ошибке в вопросе является типичным результатом двоичной несовместимости.
Решение состоит в том, чтобы получить версию, совместимую с двоичным кодом, либо обновив numpy, по крайней мере, до версии, против которой были скомпилированы pandas или statsmodels, либо перекомпилируя pandas и statsmodels для более старой версии numpy, которая уже установлена.
Нарушение обратной совместимости ABI:
Иногда улучшения или рефакторинг в numpy нарушают обратную совместимость ABI. Это произошло (непреднамеренно) с numpy 1.4.0. Как следствие, пользователи, обновившие numpy до 1.4.0, имели двоичную несовместимость со всеми другими скомпилированными пакетами, которые были скомпилированы против предыдущей версии numpy. Это требует, чтобы все пакеты с двоичными расширениями, которые используют numpy, были перекомпилированы для работы с версией, несовместимой с ABI.
источник
Для меня (Mac OS X Maverics, Python 2.7)
помогло. После этого вы можете установить обновленные пакеты pandas , scikit-learn и т. Д. С помощью pip :
источник
Я обнаружил, что это простая версия, устаревшая или несоответствующая, и была исправлена с помощью:
Или может работать с одним лайнером:
источник
У меня была аналогичная ошибка с другой библиотекой, и я понял, что в моей системе установлено несколько версий numpy. Исправление для меня заключалось в том, чтобы отредактировать мой PYTHONPATH и поместить пакеты сайтов, содержащие последнюю версию numpy, в первую позицию.
источник
Как здесь , у меня
sudo pip install pandas==0.13.1
работал толькоисточник
Я также сталкиваюсь с этой ошибкой при использовании pandas для доступа к MYSQL. Это сообщение об ошибке указывает на проблему двоичной совместимости и может быть решено с помощью последней версии pandas и пакета numpy. Вот мои шаги по решению этой проблемы, и они хорошо работают на моем 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
источник
File "numpy/core/setup.py", line 654, in get_mathlib_info RuntimeError: Broken toolchain: cannot link a simple C program
В моем случае я установил pandas-0.10.0.win-amd64-py2.7, но проверял, исправлена ли ошибка в более поздней версии pandas. Итак, я сделал easy_install -U, чтобы принудительно выполнить обновление, но затем получил указанную выше ошибку из-за некоторых несовместимостей с numpy и т. Д., Когда я сделал
import pandas
Чтобы исправить это, я просто переустановил двоичный файл pandas-0.10.0.win-amd64-py2.7, и все работает. Я не видел этого ответа (предлагает использовать pip), который, возможно, помог мне (хотя и не уверен). Установите конкретную версию с помощью easy_install
Также это подчеркивает, почему следует использовать virtualenv (чего я не делал).
источник
Для меня (Mac OS X Mavericks) удалось установить версию для python2.6:
затем запустите:
python2.6 myscript.py
источник
Проблема, которую я решил в Webfaction, заключалась в старой библиотеке numpy (1.5), которая конфликтовала с моими свежими
установка в .virtualenv.
Проблема была решена после того, как я установил pandas из виртуальной среды. Идея пришла из обсуждения на https://github.com/pydata/pandas/issues/3711 , спасибо, cpcloud !
источник
Я просто столкнулся с этой проблемой ValueError и решил ее. Определенно что-то не так с пакетом numpy.
Но когда я пытаюсь
pip install --upgrade numpy
это сделать, это не удается, поэтому я удаляю и загружаю самый новыйnumpy.zip
файл. Затем вручную разархивируйте иpython setup.py install
это.К счастью, это работает!
источник
sudo pip install --upgrade numpy
и это сработало.Как сказал @ user333700, требуемые версии библиотек могут не соответствовать друг другу. Вы получаете одну библиотеку как зависимость от другой. Затем, не зная, что она уже установлена как зависимость, вам понадобится эта конкретная библиотека, и вы установите одну версию. В таких случаях зависимости могут испортиться.
Я пережил такой случай и искал решение. Нашел это: https://stackoverflow.com/a/12975518/1694344
У меня было две разные версии для файла с информацией о яйцах и имени папки 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
Я удалил их все и переустановил numpy с помощью pip.
источник
У меня была аналогичная проблема, и простая повторная установка с использованием,
pip install ...
как предлагалось в предыдущих комментариях, не сработала.Что сработало для меня, так это переустановка с добавленным флагом
pip install --no-cache-dir ...
, похоже, где-то в кеше была несовместимая версия numpy.источник
Бывают случаи, когда вы хотите сохранить определенную версию NumPy, и упомянутый здесь вариант обновления не работает. Примером, который пришел мне в голову, был дистрибутив Python, предустановленный вместе с ArcGIS. Чтобы ArcPy работал в ArcGIS 10.5.1, этот дистрибутив должен быть Python 2.7.12 с NumPy 1.9.3, и любая другая версия NumPy, вероятно, вызовет проблемы с вашей функциональностью ArcPy.
Что вы можете сделать в этом случае, так это попытаться установить конкретную старую версию проблемной сторонней библиотеки, которая должна быть совместима со старой версией NumPy, которая есть в ArcGIS.
Например, scikit-learn 0.19.1 НЕ будет работать с NumPy 1.9.3 и приведет к той же ошибке, которую вы упомянули. Однако scikit-learn 0.15 работает нормально. Вы можете протестировать разные версии, чтобы найти ту, которая работает. Просто укажите номер версии через pip:
python -m pip install scikit-learn==0.15
источник