ValueError:numpy.dtypeのサイズが間違っています。再コンパイルしてみてください


86

Python2.7にpandasand statsmodelsパッケージをインストールしました。「importpandasas 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

1
パンダはどのようにインストールしましたか?
Andy Hayden


再コンパイルしてみましたか?
asmeurer 2013

python(x、y)、enthought、またはwinpythonディストリビューションを使用してみませんか?これらは、Windowsでの科学的なPythonユーザーのこれらのコンパイルとインストールの問題を排除するように特別に設計されており、プリコンパイルが必要になる可能性のあるほとんどのパッケージが付属しています。
daveP 2013

38
このメッセージは、インストールしたものよりも新しいnumpyバージョンに対してパンダがコンパイルされたときに表示されます。インストールしたnumpyバージョンに対してパンダを再コンパイルするか、numpyを更新する必要があります。
Josef

回答:


64

(私のコメントを少し拡張するために)

Numpyの開発者は、一般に、下位互換性のあるバイナリインターフェイス(ABI)を維持するというポリシーに従います。ただし、ABIには上位互換性がありません。

意味:

コンパイルされた拡張機能でnumpyを使用するパッケージは、特定のバージョンのnumpyに対してコンパイルされます。numpyの将来のバージョンは、パッケージのコンパイル済み拡張機能と互換性があります(例外については以下を参照してください)。これらの他のパッケージのディストリビューターは、新しいバージョンのnumpyに対してパッケージを再コンパイルする必要はなく、ユーザーが新しいバージョンのnumpyに更新するときに、ユーザーはこれらの他のパッケージを更新する必要はありません。

ただし、これは他の方向には進みません。パッケージが特定のnumpyバージョン(1.7など)に対してコンパイルされている場合、そのパッケージのバイナリが古いnumpyバージョン(1.6など)で動作するという保証はありません。ほとんどの場合、またはほとんどの場合、動作しません。

最近のバージョンのnumpyに対してコンパイルされた、pandasやstatsmodelsなどのパッケージのバイナリ配布は、古いバージョンのnumpyがインストールされている場合は機能しません。一部のパッケージ、たとえばmatplotlibは、私が正しく覚えていれば、サポートしている最も古いnumpyバージョンに対して拡張機能をコンパイルします。この場合、同じ古いバージョンまたは最新バージョンのnumpyを使用しているユーザーは、これらのバイナリを使用できます。

問題のエラーメッセージは、バイナリの非互換性の典型的な結果です。

解決策は、少なくともpandasまたはstatsmodelsがコンパイルされたバージョンにnumpyを更新するか、すでにインストールされている古いバージョンのnumpyに対してpandasおよびstatsmodelsを再コンパイルすることにより、バイナリ互換バージョンを取得することです。

ABIの下位互換性を破る:

numpyの改善やリファクタリングにより、ABIの下位互換性が失われることがあります。これは(意図せずに)numpy1.4.0で発生しました。結果として、numpyを1.4.0に更新したユーザーは、以前のバージョンのnumpyに対してコンパイルされた他のすべてのコンパイル済みパッケージとバイナリの非互換性がありました。これには、numpyを使用するバイナリ拡張子を持つすべてのパッケージを再コンパイルして、ABI非互換バージョンで動作させる必要があります。


1
numpyとpandasを更新しようとしましたが、それでもこのエラーが発生します。何かアイデアはありますか?
notSoShabby 2018

37

私にとって(Mac OS X Maverics、Python 2.7)

easy_install --upgrade numpy

助けた。この後、pipを使用して最新のパッケージpandasscikit-learnなどをインストールできます。

pip install pandas

3
「easy_install--upgradenumpy」を実行しましたが、pandasやkscikit-learnなどの最新の関連パッケージをインストールしませんでした。すべてが大丈夫です。
xjzhou 2015年

私のためにも働いた(Ubuntu 14.04、Python 2.7)
Henry Chinner 2016年

30

単純なバージョンが古くなっているか不一致であることがわかり、次のように修正されました。

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

または、1つのライナーで動作する可能性があります。

pip install --upgrade numpy scipy pandas

OSXでのelcapitanの変更により、pipがシステムファイルを上書きしないように、追加の引数として--userを使用することをお勧めします。そうしないと、ユーザーはsudoを使用したくなるでしょう。
Roy Iacob 2016

@ Roy-これは、システムpythonが使用されているかどうか、またはbrewpythonでbrewバージョンafaik-sudoが必要ないかどうかによって異なります。
RexFuzzle 2016

5

別のライブラリでも同様のエラーが発生し、システムにいくつかのバージョンのnumpyがインストールされていることに気付きました。私の修正は、PYTHONPATHを編集し、最新バージョンのnumpyを含むサイトパッケージを最初の位置に配置することでした。



1

パンダを使用してMYSQLにアクセスするときにもこのエラーが発生します。このエラーメッセージは、バイナリ互換の問題を示しており、最新バージョンのpandasとnumpyパッケージを使用することで解決できます。この問題を解決するための私の手順は次のとおりです。これは私のUbuntu12.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
Mona Jalal 2016

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インストールした後、問題は解決しました。このアイデアは、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 2016年

0

@ user333700が言ったように、必要なバージョンのライブラリが互いに適合しない場合があります。あるライブラリを別のライブラリの依存関係として取得します。次に、依存関係としてすでにインストールされていることを知らずに、その特定のライブラリが必要であり、1つのバージョンをインストールします。このような方法では、依存関係が台無しになる可能性があります。

私はそのような場合を生き、解決策を探しました。これを見つけました:https//stackoverflow.com/a/12975518/1694344

numpyのegg-infoファイルとフォルダー名には2つの異なるバージョンがありました。

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をArcGIS10.5.1で機能させるには、そのディストリビューションがPython2.7.12とNumPy1.9.3である必要があり、他のバージョンのNumPyを使用するとArcPyの機能に問題が発生する可能性があります。

このケースでできることは、ArcGISが持っている古いNumPyバージョンと互換性があると思われる、問題のあるサードパーティライブラリの特定の古いバージョンをインストールすることです。

たとえば、scikit-learn0.19.1はNumPy1.9.3では動作せず、前述したのと同じエラーが発生します。ただし、scikit-learn0.15は正常に機能します。さまざまなバージョンをテストして、機能するバージョンを見つけることができます。pipを介してバージョン番号を記載するだけです。

python -m pip install scikit-learn==0.15
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.