ValueError : numpy.dtype의 크기가 잘못되었습니다. 다시 컴파일 해보세요.


86

방금 python 2.7에 pandas와 statsmodels 패키지를 설치했습니다. "pd로 pandas 가져 오기"를 시도했을 때이 오류 메시지가 나옵니다. 누구든지 도울 수 있습니까? 감사!!!

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

1
Pandas를 어떻게 설치 했습니까?
Andy Hayden


다시 컴파일 해 보셨습니까?
asmeurer

python (x, y), enthought 또는 winpython 배포를 사용하지 않는 이유는 무엇입니까? Windows에서 과학 파이썬 사용자를 위해 이러한 컴파일 및 설치 문제를 제거하도록 특별히 설계되었으며 미리 컴파일하려는 대부분의 패키지와 함께 제공됩니다.
DaveP

39
이 메시지는 pandas가 설치 한 버전보다 새로운 numpy 버전에 대해 컴파일 될 때 표시됩니다. 설치 한 numpy 버전에 대해 pandas를 다시 컴파일하거나 numpy를 업데이트해야합니다.
Josef

답변:


65

(내 의견에 대해 조금 확장)

Numpy 개발자는 일반적으로 이전 버전과 호환되는 바이너리 인터페이스 (ABI)를 유지하는 정책을 따릅니다. 그러나 ABI는 순방향 호환성이 없습니다.

의미 :

컴파일 된 확장에서 numpy를 사용하는 패키지는 특정 버전의 numpy에 대해 컴파일됩니다. numpy의 향후 버전은 패키지의 컴파일 된 확장과 호환됩니다 (예외 사항은 아래 참조). 이러한 다른 패키지의 배포자는 최신 버전의 numpy에 대해 패키지를 다시 컴파일 할 필요가 없으며 사용자가 최신 버전의 numpy로 업데이트 할 때 이러한 다른 패키지를 업데이트 할 필요가 없습니다.

그러나 이것은 다른 방향으로 가지 않습니다. 패키지가 특정 numpy 버전 (예 : 1.7)에 대해 컴파일 된 경우 해당 패키지의 바이너리가 이전 numpy 버전 (예 : 1.6)에서 작동 할 것이라는 보장은 없으며 매우 자주 또는 대부분 그렇지 않습니다.

최신 버전의 numpy에 대해 컴파일 된 pandas 및 statsmodels와 같은 패키지의 바이너리 배포는 이전 버전의 numpy가 설치된 경우 작동하지 않습니다. 예를 들어 matplotlib와 같은 일부 패키지는 올바르게 기억하면 지원하는 가장 오래된 numpy 버전에 대해 확장을 컴파일합니다. 이 경우 동일한 이전 버전 또는 최신 버전의 numpy를 사용하는 사용자는 해당 바이너리를 사용할 수 있습니다.

질문의 오류 메시지는 바이너리 비 호환성의 일반적인 결과입니다.

해결책은 numpy를 최소한 pandas 또는 statsmodels가 컴파일 된 버전으로 업데이트하거나 이미 설치된 numpy의 이전 버전에 대해 pandas 및 statsmodels를 다시 컴파일하여 바이너리 호환 버전을 가져 오는 것입니다.

ABI 이전 버전과의 호환성 깨기 :

때때로 numpy의 개선 또는 리팩토링으로 인해 ABI 이전 버전과의 호환성이 깨집니다. 이것은 numpy 1.4.0에서 (의도하지 않게) 발생했습니다. 결과적으로 numpy를 1.4.0으로 업데이트 한 사용자는 이전 버전의 numpy에 대해 컴파일 된 다른 모든 컴파일 된 패키지와 바이너리 비 호환성을 가졌습니다. 이를 위해서는 numpy를 사용하는 바이너리 확장이있는 모든 패키지를 ABI 비 호환 버전에서 작동하도록 다시 컴파일해야합니다.


1
나는 numpy와 pandas를 업데이트하려고 시도했지만 여전히이 오류가 발생합니다. 아이디어가 있습니까?
NotSoShabby dec.

37

나를 위해 (Mac OS X Maverics, Python 2.7)

easy_install --upgrade numpy

도왔습니다. 그런 다음 pip를 사용하여 최신 패키지 pandas , scikit-learn 등을 설치할 수 있습니다 .

pip install pandas

3
방금 "easy_install --upgrade numpy"를 실행했지만 pandas 및 k scikit-learn과 같은 최신 관련 패키지를 설치하지 않았습니다. 모든 것도 괜찮습니다.
xjzhou

(우분투 14.04, 파이썬 2.7) 너무 나를 위해 일
헨리 Chinner

30

나는 그것이 구식이거나 불일치하는 단순한 버전임을 발견하고 다음과 같이 수정되었습니다.

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

또는 하나의 라이너로 작업 할 수 있습니다.

pip install --upgrade numpy scipy pandas

OSX에서 el capitan이 변경되면 pip가 시스템 파일을 덮어 쓰지 않도록 --user를 추가 인수로 사용하는 것이 좋습니다. 그렇지 않으면 사용자는 sudo를 사용하고 싶은 유혹을 느낄 것입니다.
Roy Iacob

@ Roy- 이것은 시스템 파이썬이 사용 중인지 또는 brew python에 brew 버전 afaik-sudo가 필요하지 않은지에 따라 다릅니다.
RexFuzzle

5

다른 라이브러리에서 비슷한 오류가 발생했으며 시스템에 여러 버전의 numpy가 설치되어 있음을 깨달았습니다. 나를위한 수정 사항은 내 PYTHONPATH를 편집하고 최신 버전의 numpy가 포함 된 사이트 패키지를 첫 번째 위치에 배치하는 것이 었습니다.


2

마찬가지로 여기 , 나에 대해서만은 sudo pip install pandas==0.13.1


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

1
나는 이런 짓을하고이 오류가있어File "numpy/core/setup.py", line 654, in get_mathlib_info RuntimeError: Broken toolchain: cannot link a simple C program
모나 잘랄

1

제 경우에는 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 (내가 사용하지 않았던)를 사용해야하는 이유를 강조합니다.


1

나를 위해 (Mac OS X Mavericks) python2.6 버전을 설치했습니다.

sudo port install py26-scikit-learn

그런 다음 실행하십시오.

python2.6 myscript.py

1

Webfaction에서 해결 한 문제는 내 신선한 것과 충돌하는 오래된 numpy 라이브러리 (1.5)였습니다.

pip install pandas

.virtualenv에 설치.

가상 환경에서 pip install pandas를 수행 한 후 문제가 해결되었습니다. 아이디어는 https://github.com/pydata/pandas/issues/3711에 대한 토론에서 나왔습니다 . 감사합니다. cpcloud !


0

방금이 'ValueError'문제를 만나 해결했습니다. 분명히 numpy 패키지에 문제가 있습니다.

하지만 시도 할 pip install --upgrade numpy때 실패했기 때문에 최신 numpy.zip파일을 제거하고 다운로드 합니다. 그런 다음 수동으로 압축을 풉니 python setup.py install다.

다행히 작동합니다!


나에게도 실패했습니다. 그런 다음 시도 sudo pip install --upgrade numpy했고 작동했습니다.
Harsh Wardhan

0

@ user333700이 말했듯이 필요한 라이브러리 버전은 서로 맞지 않을 수 있습니다. 한 라이브러리를 다른 라이브러리의 종속성으로 가져옵니다. 그런 다음 이미 종속성으로 설치되었는지 알지 못해도 특정 라이브러리가 필요하고 하나의 버전을 설치합니다. 이러한 방식으로 종속성이 엉망이 될 수 있습니다.

나는 그러한 경우에 살았고 해결책을 찾았습니다. 발견 : https://stackoverflow.com/a/12975518/1694344

egg-info 파일과 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

나는 그들을 모두 제거하고 pip로 numpy를 다시 설치했습니다.


0

비슷한 문제가 있었고 pip install ...이전 의견에서 제안한대로 간단히 다시 설치해도 작동하지 않았습니다.

나를 위해 일한 것은 추가 된 플래그로 다시 설치하는 pip install --no-cache-dir ...것이 었습니다. 캐시 어딘가에 호환되지 않는 numpy 버전이있는 것 같습니다.


-1

특정 NumPy 버전을 유지하려는 경우 여기에 언급 된 업그레이드 옵션이 작동하지 않는 경우가 있습니다. 나에게 발생한 예는 ArcGIS와 함께 사전 설치된 Python 배포입니다. ArcPy가 ArcGIS 10.5.1에서 작동하려면 해당 배포판이 NumPy 1.9.3과 함께 Python 2.7.12 여야하며 다른 버전의 NumPy는 ArcPy 기능에 문제를 일으킬 수 있습니다.

이 경우에 할 수있는 일은 ArcGIS에있는 이전 NumPy 버전과 호환되어야하는 문제가있는 타사 라이브러리의 특정 이전 버전을 설치하는 것입니다.

예를 들어 scikit-learn 0.19.1은 NumPy 1.9.3에서 작동하지 않으며 언급 한 것과 동일한 오류가 발생합니다. 그러나 scikit-learn 0.15는 잘 작동합니다. 다른 버전을 테스트하여 작동하는 버전을 찾을 수 있습니다. pip를 통해 버전 번호를 언급하십시오.

python -m pip install scikit-learn==0.15
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.