Acabei de instalar o pacote pandas e modelos de estatísticas no meu python 2.7 Quando tentei "importar pandas como pd", surgiu esta mensagem de erro. Alguém pode ajudar? Obrigado!!!
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
Amber Chen
fonte
fonte
Respostas:
(para expandir um pouco o meu comentário)
Os desenvolvedores do Numpy seguem em geral uma política de manter uma interface binária compatível com versões anteriores (ABI). No entanto, a ABI não é compatível com versões futuras.
O que isso significa:
Um pacote que usa numpy em uma extensão compilada é compilado em uma versão específica de numpy. A versão futura do numpy será compatível com a extensão compilada do pacote (para exceção, veja abaixo). Os distribuidores desses outros pacotes não precisam recompilar seus pacotes com as versões mais recentes de numpy e os usuários não precisam atualizar esses outros pacotes quando os usuários atualizam para uma versão mais recente de numpy.
No entanto, isso não vai na outra direção. Se um pacote é compilado em uma versão numpy específica, digamos 1.7, então não há garantia de que os binários desse pacote funcionarão com versões numpy mais antigas, digamos 1.6, e muitas vezes ou na maioria das vezes não.
A distribuição binária de pacotes como pandas e modelos de estatísticas, que são compilados com uma versão recente do numpy, não funcionará quando uma versão mais antiga do numpy for instalada. Alguns pacotes, por exemplo matplotlib, se bem me lembro, compilam suas extensões contra a versão numpy mais antiga que eles suportam. Nesse caso, os usuários com a mesma versão antiga ou mais recente do numpy podem usar esses binários.
A mensagem de erro na pergunta é um resultado típico de incompatibilidades binárias.
A solução é obter uma versão binária compatível, atualizando o numpy para pelo menos a versão com a qual os pandas ou modelos de estatísticas foram compilados, ou recompilar os pandas e modelos de estatísticas com a versão mais antiga de numpy que já está instalada.
Quebrando a compatibilidade com versões anteriores da ABI:
Às vezes, melhorias ou refatorações na compatibilidade com versões anteriores da ABI. Isso aconteceu (não intencionalmente) com numpy 1.4.0. Como consequência, os usuários que atualizaram o numpy para 1.4.0, tinham incompatibilidades binárias com todos os outros pacotes compilados, que foram compilados com uma versão anterior do numpy. Isso requer que todos os pacotes com extensões binárias que usam numpy tenham que ser recompilados para funcionar com a versão incompatível com ABI.
fonte
Para mim (Mac OS X Maverics, Python 2.7)
ajudou. Depois disso, você pode instalar pacotes atualizados, pandas , scikit-learn , etc. usando pip :
fonte
Achei que era uma versão simples desatualizada ou incompatível e foi corrigido com:
Ou pode funcionar com um forro:
fonte
Tive um erro semelhante com outra biblioteca e percebi que tinha várias versões do numpy instaladas no meu sistema. A correção para mim foi editar meu PYTHONPATH e colocar os pacotes do site que continham a última versão do numpy na primeira posição.
fonte
Como aqui , pra mim só
sudo pip install pandas==0.13.1
funcionoufonte
Também encontro esse erro ao usar o pandas para acessar o MYSQL. Esta mensagem de erro indica um problema de compatibilidade binária e pode ser resolvido usando a versão mais recente do pandas e do pacote numpy. Aqui estão meus passos para resolver esse problema e funciona bem no meu 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
fonte
File "numpy/core/setup.py", line 654, in get_mathlib_info RuntimeError: Broken toolchain: cannot link a simple C program
No meu caso, instalei o pandas-0.10.0.win-amd64-py2.7, mas estava verificando se um bug foi corrigido em uma versão mais recente do pandas. Então eu fiz um easy_install -U para forçar a atualização, mas depois recebi o erro acima devido a algumas incompatibilidades com numpy etc ... quando fiz
import pandas
Para corrigir, acabei de reinstalar o binário pandas-0.10.0.win-amd64-py2.7 e tudo funciona. Não vi esta resposta (sugere o uso de pip), o que pode ter me ajudado (embora não tenha certeza) Instalar uma versão particular com easy_install
Isso também destaca por que se deve usar o virtualenv (o que eu não usava).
fonte
Para mim (Mac OS X Mavericks) funcionou para instalar a versão para python2.6:
então corra:
python2.6 myscript.py
fonte
O problema que resolvi no Webfaction era a antiga biblioteca numpy (1.5) que estava em conflito com a minha nova
instalação em .virtualenv.
O problema foi resolvido depois que eu fiz pip install pandas fora do ambiente virtual. A ideia surgiu de uma discussão em https://github.com/pydata/pandas/issues/3711 , obrigado, cpcloud !
fonte
Acabei de encontrar esse problema de 'ValueError' e resolvi-o. Definitivamente, há algo errado com o pacote entorpecido.
Mas quando tentei
pip install --upgrade numpy
falhar, desinstalei e baixei onumpy.zip
arquivo mais recente . Em seguida, descompacte manualmente epython setup.py install
.Felizmente, funciona!
fonte
sudo pip install --upgrade numpy
e funcionou.Como @ user333700 disse, as versões necessárias das bibliotecas podem não se encontrar. Você obtém uma biblioteca como dependência de outra. Então, sem saber que já foi instalado como dependência, você precisa daquela biblioteca específica e instala uma versão. Com essas formas, as dependências podem bagunçar.
Vivi um caso assim e procurei uma solução. Encontrou isto: https://stackoverflow.com/a/12975518/1694344
Eu tinha duas versões diferentes para o arquivo de informações do ovo e o nome da pasta 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
Eu removi todos eles e reinstalei numpy com pip.
fonte
Tive um problema semelhante e simplesmente reinstalei usando
pip install ...
o sugerido nos comentários anteriores não funcionou.O que funcionou para mim foi reinstalar com o sinalizador adicionado
pip install --no-cache-dir ...
, parece que havia uma versão incompatível em algum lugar do cache.fonte
Há casos em que você deseja manter uma versão específica do NumPy e a opção de atualização mencionada aqui não funcionará. Um exemplo que me ocorreu foi a distribuição Python pré-instalada com ArcGIS. Para que o ArcPy funcione no ArcGIS 10.5.1, essa distribuição precisa ser Python 2.7.12 com NumPy 1.9.3 e qualquer outra versão do NumPy provavelmente causará problemas com a funcionalidade do ArcPy.
O que você pode fazer com este caso é tentar instalar uma versão mais antiga específica da problemática biblioteca de terceiros que é supostamente compatível com a versão NumPy mais antiga que o ArcGIS possui.
Por exemplo, o scikit-learn 0.19.1 NÃO funcionaria com o NumPy 1.9.3 e resultaria no mesmo erro que você mencionou. No entanto, o scikit-learn 0.15 funciona bem. Você pode testar versões diferentes para encontrar aquela que funciona. Basta mencionar o número da versão por meio do pip:
python -m pip install scikit-learn==0.15
fonte