webentwicklung-frage-antwort-db.com.de

numpy.ufunc hat die falsche Größe, versuchen Sie es erneut zu kompilieren. auch mit den neuesten pandas und numpy versionen

Ich benutze Pandas in einem Container und erhalte folgende Fehlermeldung:

Traceback (most recent call last):
  File "/volumes/dependencies/site-packages/celery/app/trace.py", line 374, in trace_task
    R = retval = fun(*args, **kwargs)
  File "/volumes/dependencies/site-packages/celery/app/trace.py", line 629, in __protected_call__
    return self.run(*args, **kwargs)
  File "/volumes/code/autoai/celery/data_template/api.py", line 16, in run_data_template_task
    data_template.run(data_bundle, columns=columns)
  File "/volumes/code/autoai/models/data_template.py", line 504, in run
    self.to_parquet(data_bundle, columns=columns)
  File "/volumes/code/autoai/models/data_template.py", line 162, in to_parquet
    }, parquet_path=data_file.path, directory="", dataset=self)
  File "/volumes/code/autoai/core/datasets/parquet_converter.py", line 46, in convert
    file_system.write_dataframe(parquet_path, chunk, directory, append=append)
  File "/volumes/code/autoai/core/file_systems.py", line 76, in write_dataframe
    append=append)
  File "/volumes/dependencies/site-packages/pandas/core/frame.py", line 1945, in to_parquet
    compression=compression, **kwargs)
  File "/volumes/dependencies/site-packages/pandas/io/parquet.py", line 256, in to_parquet
    impl = get_engine(engine)
  File "/volumes/dependencies/site-packages/pandas/io/parquet.py", line 40, in get_engine
    return FastParquetImpl()
  File "/volumes/dependencies/site-packages/pandas/io/parquet.py", line 180, in __init__
    import fastparquet
  File "/volumes/dependencies/site-packages/fastparquet/__init__.py", line 8, in <module>
    from .core import read_thrift
  File "/volumes/dependencies/site-packages/fastparquet/core.py", line 13, in <module>
    from . import encoding
  File "/volumes/dependencies/site-packages/fastparquet/encoding.py", line 11, in <module>
    from .speedups import unpack_byte_array
  File "__init__.pxd", line 861, in init fastparquet.speedups
ValueError: numpy.ufunc has the wrong size, try recompiling. Expected 192, got 216

Ich las weiter andere Antworten dass diese Meldung angezeigt wird, wenn Pandas mit einer neueren numpy-Version verglichen werden, als der, die Sie installiert haben. Aber beide Pandas und Numpy zu aktualisieren, funktionierte nicht für mich. Ich habe versucht herauszufinden, ob ich einige Versionen von numpy habe, aber pip show numpy scheint die neueste Version anzuzeigen. 

Auf seltsame Weise geschieht dies nur, wenn ich mich lokal und nicht auf dem Server bereitstelle. 

Irgendwelche Ideen, wie man das beheben kann? Oder zumindest das Debuggen meiner Numpy- und Pandas-Versionen (wenn es mehrere Versionen gibt, wie überprüfe ich das)?

Ich habe versucht: Beide Pakete zu aktualisieren und sie zu entfernen und erneut zu installieren. Keine Hilfe da.

7
NotSoShabby

Die Antwort war, dass fastparquet (ein Paket, das von Pandas verwendet wird) aus irgendeinem Grund eine numpy ältere Binärdatei verwendet. Das Aktualisieren dieses Pakets hat geholfen. Ich denke, wenn jemand anderes dieses Problem umgeht, ist es der richtige Weg, alle verwandten Pakete (die numpy verwenden) zu aktualisieren und zu aktualisieren

4
NotSoShabby

naja eigentlich wurde mein problem irgendwie gelöst von

 pip uninstall numpy
 pip install numpy

der wahre Prozess ist

➜  ~ pip3 uninstall numpy -y
Uninstalling numpy-1.14.5:
  Successfully uninstalled numpy-1.14.5
➜  ~ pip3 install numpy     
Requirement already satisfied: numpy in /usr/lib/python3/dist-packages (1.16.1)
➜  ~ pip3 uninstall numpy   
Uninstalling numpy-1.16.1:
  Would remove:
    /usr/bin/f2py3
    /usr/bin/f2py3.7
    /usr/lib/python3/dist-packages/numpy
    /usr/lib/python3/dist-packages/numpy-1.16.1.Egg-info
Proceed (y/n)? y
  Successfully uninstalled numpy-1.16.1
➜  ~ pip3 install numpy   
Collecting numpy...

was bedeutet, dass das Problem möglicherweise ein Versionskonflikt ist?

5
Jason D

TLDR: Wenn Andock Hinzufügen:

RUN pip install numpy

vorher Sie installieren Pandas (wahrscheinlich nur Ihre Pip-Installation -r Requirements.txt) und es wird wieder funktionieren.

Ich mache das in Docker Building-Pandas in Alpine und stoße auf die gleiche Ausgabe, und es ist gerade aufgetaucht (27. Dezember 2018) für einen Build, der zuvor gut funktioniert hat.

4
voglster

Ich hatte das gleiche Problem wie oben. Meine Lösung war, Python 2.7 von der offiziellen Website zu installieren: https://www.python.org/downloads/release/python-2713/

0
kbenda

Vergewissern Sie sich, dass auf /volumes/dependencies/site-packages/ die richtige Version von numpy installiert ist und Sie sie verwenden.

0
yann

Ich hatte das gleiche Problem und versuchte alle obigen Antworten (zum Zeitpunkt des Schreibens). Das einzige, was für mich funktionierte, war auf pyarrow umzusteigen. 

Ich habe dann darauf geachtet, die pyarrow-Engine anzugeben, wenn Sie Parkett in Pandas verwenden. Pandas sollten zwar vor den pyarrow den fastparquet-Modulen als Vorgabe dienen. 

pd.read_parquet('./path', engine='pyarrow')
0
gavinest