La instalación pip predeterminada de Dask proporciona “ImportError: No hay un módulo llamado toolz”

Instalé Dask usando pip de esta manera:

pip install dask 

y cuando bash import dask.dataframe as dd el siguiente mensaje de error:

 >>> import dask.dataframe as dd Traceback (most recent call last): File "", line 1, in  File "/path/to/venv/lib/python2.7/site-packages/dask/__init__.py", line 5, in  from .async import get_sync as get File "/path/to/venv/lib/python2.7/site-packages/dask/async.py", line 120, in  from toolz import identity ImportError: No module named toolz No module named toolz 

Noté que la documentación dice

pip install dask : instala solo dask, que depende solo de la biblioteca estándar. Esto es apropiado si solo desea los progtwigdores de tareas.

así que estoy confundido en cuanto a por qué esto no funcionó.

En Dask 0.13.0 e inferior, había un requisito en la función de identity toolz dentro de dask/async.py . Hay una solicitud de extracción cerrada abierta asociada con el problema # 1849 de GitHub para eliminar esta dependencia. Mientras tanto , si, por alguna razón, tiene una versión anterior de dask, puede pip install toolz el problema simplemente haciendo pip install toolz .

Pero esto no solucionaría (completamente) su problema con import dask.dataframe as dd todos modos. Porque todavía obtendrías este error:

 >>> import dask.dataframe as dd Traceback (most recent call last): File "", line 1, in  File "/data/staff_agbio/PhyloWeb/data/dask-test/venv/local/lib/python2.7/site-packages/dask/dataframe/__init__.py", line 3, in  from .core import (DataFrame, Series, Index, _Frame, map_partitions, File "/data/staff_agbio/PhyloWeb/data/dask-test/venv/local/lib/python2.7/site-packages/dask/dataframe/core.py", line 12, in  import pandas as pd ImportError: No module named pandas 

o si ya tenía pandas instalado, obtendría ImportError: No module named cloudpickle . Asi que.

Para utilizar los marcos de datos paralelizados de Dask (creados sobre pandas), debe indicar a pip que instale algunos “extras” ( referencia ), como se menciona en la documentación de instalación de Dask :

 pip install "dask[dataframe]" 

O simplemente puede hacer la pip install "dask[complete]" para obtener toda la bolsa de trucos. NB: Es posible que las comillas dobles no sean necesarias en su shell.

La justificación para esto también se menciona en la documentación de Dask:

Hacemos esto para que los usuarios del progtwigdor ligero de dask core no tengan que descargar las dependencias más exóticas de las colecciones (números, pandas, etc.)

Tuve este mismo problema y esto fue lo que me lo arregló.

  1. Crea un env virtual para tu proyecto.
  2. Cd el directorio de su proyecto (no es necesario si es bueno con la navegación del directorio)
  3. Activa tu env virtual
  4. pip install "dask[complete]" : Esto instalará todo. Es posible que desee instalar solo un componente dado como dataframe, luego use pip install "dask[dataframe]"

La conclusión era que tenía que estar en mi entorno virtual; Esto instalaría dask solo para este env.