Подтвердить что ты не робот

ValueError: numpy.dtype имеет неправильный размер, попробуйте перекомпилировать

Я только что установил 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
4b9b3361

Ответ 1

(чтобы немного увеличить мой комментарий)

Разработчики 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.

Ответ 2

Для меня (Mac OS X Maverics, Python 2.7)

easy_install --upgrade numpy

помог. После этого вы можете установить обновленные пакеты pandas, scikit-learn, e.t.c. используя pip:

pip install pandas

Ответ 3

Я нашел, что это простая версия, устаревшая или несоответствующая, и была исправлена ​​с помощью:

pip install --upgrade numpy
pip install --upgrade scipy
pip install --upgrade pandas

Или может работать с одним лайнером:

pip install --upgrade numpy scipy pandas

Ответ 4

У меня была аналогичная ошибка с другой библиотекой, и я понял, что в моей системе установлено несколько версий numpy. Исправление для меня состояло в том, чтобы отредактировать мой PYTHONPATH и поместить пакеты сайта, содержащие последнюю версию numpy в первой позиции.

Ответ 5

Как и в здесь, для меня только sudo pip install pandas==0.13.1 работал

Ответ 6

Я также сталкиваюсь с этой ошибкой при использовании 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

Ответ 7

В моем случае я установил 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 (которого я не был).

Ответ 8

Для меня (Mac OS X Mavericks) он работал для установки версии для python2.6:

sudo port install py26-scikit-learn

затем выполните:

python2.6 myscript.py

Ответ 9

Проблема, которую я решил в Webfaction, - это старая библиотека numpy (1.5), которая противоречила моей новой

pip install pandas

установка в .virtualenv.

Проблема была решена после того, как я сделал pip install pandas из виртуальной среды. Идея пришла из обсуждения https://github.com/pydata/pandas/issues/3711, спасибо, cpcloud!

Ответ 10

Я просто встречаю эту проблему "ValueError" и обратился к ней. Определенно, что-то не так с numpy пакетом.

Но когда я пытаюсь выполнить pip install --upgrade numpy, это не удалось, поэтому я удаляю и загружаю новый numpy.zip файл. Затем вручную распаковать и python setup.py install его.

К счастью, это работает!

Ответ 11

Как и @user333700, требуемые версии библиотек могут не совпадать друг с другом. Вы получаете одну библиотеку в качестве другой зависимости. Тогда, не зная, что он уже установлен как зависимость, вам нужна эта конкретная библиотека, и вы устанавливаете одну версию. С такими способами зависимости могут испортиться.

Я жил таким делом и искал решение. Найдено: fooobar.com/info/69247/...

У меня было две разные версии для файла информации о яйцах и имя папки 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.