web-dev-qa-db-fra.com

L'installation par défaut de Dask dans pip donne "ImportError: Aucun module nommé toolz"

J'ai installé Dask en utilisant pip comme ceci:

pip install dask

et quand j'essaye de faire import dask.dataframe as dd Je reçois le message d'erreur suivant:

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

J'ai remarqué que la documentation indique

pip install dask: N'installe que dask, qui ne dépend que de la bibliothèque standard. Cela est approprié si vous souhaitez uniquement les planificateurs de tâches.

donc je ne sais pas pourquoi cela n'a pas fonctionné.

14
TheDudeAbides

Pour utiliser les trames de données parallélisées de Dask (construites sur des pandas), vous devez dire à pip d'installer des "extras" ( référence ), comme mentionné dans documentation d'installation de Dask =:

pip install "dask[dataframe]"

Ou vous pourriez simplement faire

pip install "dask[complete]"

pour obtenir tout le sac de trucs. NB: Les guillemets doubles peuvent ou non être requis dans votre Shell.

La justification de ceci est (ou était) mentionnée dans la documentation de Dask:

Nous le faisons pour que les utilisateurs du planificateur de tâches de base léger ne soient pas tenus de télécharger les dépendances les plus exotiques des collections (numpy, pandas, etc.)

Comme mentionné dans réponse d'Obinna , vous pouvez le faire à l'intérieur d'un virtualenv, ou utiliser pip install --user pour placer les bibliothèques dans votre répertoire personnel, si, par exemple, vous n'avez pas de privilèges d'administrateur sur le système d'exploitation hôte.

Détails supplémentaires

À Dask 0.13.0 et en dessous, il y avait une exigence sur la fonction toolz 'identity dans dask/async.py. Il y a un ouvert une demande d'extraction fermée associée à GitHub problème # 1849 pour supprimer cette dépendance. Pendant ce temps Si, pour une raison quelconque, vous êtes bloqué avec une ancienne version de dask, vous pouvez contourner ce problème particulier en faisant simplement pip install toolz.

Mais cela ne résoudrait pas (complètement) votre problème avec import dask.dataframe as dd en tous cas. Parce que vous obtiendrez toujours cette erreur :

>>> import dask.dataframe as dd
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/data/staff_agbio/PhyloWeb/data/dask-test/venv/local/lib/python2.7/site-packages/dask/dataframe/__init__.py", line 3, in <module>
    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 <module>
    import pandas as pd
ImportError: No module named pandas

ou si vous aviez déjà installé pandas, vous obtiendrez ImportError: No module named cloudpickle. Alors, pip install "dask[dataframe]" semble être la voie à suivre si vous êtes dans cette situation.

16
TheDudeAbides

J'ai eu ce même problème et c'est ce qui l'a résolu pour moi.

  1. Créez un environnement virtuel pour votre projet
  2. Cd votre répertoire de projet (non requis si vous êtes bon avec la navigation dans les répertoires)
  3. Activez votre env virtuel
  4. pip install "dask[complete]": Cela va tout installer. Vous souhaiterez peut-être installer uniquement un composant donné comme dataframe, puis utilisez pip install "dask[dataframe]"

L'essentiel était que je devais être dans mon environnement virtuel; cela installerait dask pour cet env uniquement.

1
Obinna Nnenanya

requirements.txt fonctionne:

awscli==1.16.69
botocore=1.13.0
boto3==1.9.79
numpy==1.16.2
dask[complete]
0
Victor Villacorta
conda install dask
conda install dask-core

Résolu le problème pour moi.

0
0x01h