我使用像这样的pip安装了Dask:
pip install dask
当我尝试做import dask.dataframe as dd
时,我收到以下错误消息:
>>> 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
我注意到the documentation说
pip install dask
:仅安装dask,它仅依赖于标准库。如果您只需要任务计划程序,这是合适的。
所以我很困惑为什么这不起作用。
在Dask 0.13.0及以下,toolz中有identity
'dask/async.py
函数的要求。有
一个开放的
与GitHub issue #1849关联的关闭拉取请求,以消除此依赖关系。
同时
如果由于某种原因,你被困在旧版本的dask中,你可以通过简单地执行pip install toolz
来解决这个特定问题。
但无论如何,这都不会(完全)修复import dask.dataframe as dd
的问题。因为你仍然会收到此错误:
>>> 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
或者如果你已经安装了熊猫,你会得到ImportError: No module named cloudpickle
。所以。
为了使用Dask的并行化数据帧(构建在pandas之上),你必须告诉pip安装一些“extras”(reference),如Dask installation documentation中所述:
pip install "dask[dataframe]"
或者你可以这样做
pip install "dask[complete]"
得到一大堆技巧。注意:shell中可能需要也可能不需要双引号。
Dask文档中还提到了对此的理由:
我们这样做是为了让轻量级核心dask调度程序的用户不需要下载集合中更具异国情调的依赖项(numpy,pandas等)
我有同样的问题,这就是为我解决的问题。
pip install "dask[complete]"
:这将安装一切。您可能希望只安装一个给定的组件,如dataframe,然后使用pip install "dask[dataframe]"
底线是我必须在我的虚拟环境中;这将仅为此env安装dask。
working requirements.txt:
awscli==1.16.69
botocore=1.13.0
boto3==1.9.79
numpy==1.16.2
dask[complete]