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é.
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.
À 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.
J'ai eu ce même problème et c'est ce qui l'a résolu pour moi.
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.
requirements.txt fonctionne:
awscli==1.16.69
botocore=1.13.0
boto3==1.9.79
numpy==1.16.2
dask[complete]
conda install dask
conda install dask-core
Résolu le problème pour moi.