web-dev-qa-db-ja.com

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

pandasとstatsmodelsパッケージをpythonにインストールしました2.7「import pandas as 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
85
Amber Chen

(私のコメントを少し広げるため)

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

それが意味するもの:

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

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

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

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

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

ABIの下位互換性を破る:

Numpyの改善やリファクタリングにより、ABIの後方互換性が損なわれる場合があります。これはnumpy 1.4.0で(意図せずに)起こりました。結果として、numpyを1.4.0に更新したユーザーは、以前のバージョンのnumpyに対してコンパイルされた他のすべてのコンパイル済みパッケージとバイナリ非互換性がありました。これには、numpyを使用するバイナリ拡張機能を持つすべてのパッケージを、ABI互換性のないバージョンで動作するように再コンパイルする必要があります。

62
Josef

私(Mac OS X Maverics、Python 2.7)

easy_install --upgrade numpy

助けた。この後、最新のパッケージpandasscikit-learnなどpipを使用:

pip install pandas
37

私はそれが時代遅れまたは不一致である単純なバージョンであることがわかり、修正されました:

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

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

pip install --upgrade numpy scipy pandas
30
RexFuzzle

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

5
Calimo

here のように、私にとってはSudo pip install pandas==0.13.1のみが機能しました

2
Tal

私(Mac OS X Mavericks)の場合、python2.6のバージョンをインストールすることができました。

Sudo port install py26-scikit-learn

次に実行します:

python2.6 myscript.py
1
user3915137

pandasを使用して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
Houcheng

Webfactionで解決した問題は古いnumpy library(1.5)で、これは私の新鮮な

pIPインストールパンダ

.virtualenvでのインストール。

この問題は、仮想環境からpandasをpipインストールして解決しました。このアイデアは、 https://github.com/pydata/pandas/issues/3711 、ありがとう、 cpcloud

1
ph7

私の場合、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
Paul

私はこの「ValueError」の問題に出会い、対処しました。間違いなく、numpyパッケージに何か問題があります。

しかし、pip install --upgrade numpyを試みると失敗したため、最新のnumpy.Zipファイルをアンインストールしてダウンロードします。次に、手動解凍してpython setup.py installします。

幸いなことに、それは動作します!

0
Yuhao

同様の問題があり、以前のコメントで提案されたpip install ...を使用して単純に再インストールすることはできませんでした。

私のために働いたのは、追加されたフラグpip install --no-cache-dir ...で再インストールすることでした。キャッシュのどこかに互換性のないnumpyバージョンがあったようです。

0

特定のNumPyバージョンを保持したい場合があり、ここに記載されているアップグレードオプションは機能しません。私が思いついた例は、ArcGISがプリインストールされているPythonディストリビューションです。 ArcGIS 10.5.1でArcPyを使用するには、その配布がPython 2.7.12とNumPy 1.9.3である必要があり、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
0
dbouz

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

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

Egg-infoファイルとnumpyのフォルダー名には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

それらをすべて削除し、numpyをpipで再インストールしました。

0
Sedat Kestepe