Dask的默认pip安装提供"ImportError:No module named toolz"

The*_*des 14 python installation pip importerror dask

我用这样的pip 安装了Dask:

pip install dask
Run Code Online (Sandbox Code Playgroud)

当我尝试做时,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
Run Code Online (Sandbox Code Playgroud)

我注意到文档说明了

pip install dask:仅安装dask,它仅依赖于标准库.如果您只需要任务计划程序,这是合适的.

所以我很困惑为什么这不起作用.

The*_*des 15

在Dask 0.13.0及更低版本中,对toolzpip install --user功能有要求identity.有一个打开的关闭拉取请求与GitHub 问题#1849相关联,以消除此依赖关系.与此同时,如果由于某种原因,您遇到了旧版本的dask,您可以通过简单地解决这个问题dask/async.py.

pip install toolz无论如何,这都不会(完全)修复你的问题.因为你仍然会收到错误:

pip install "dask[dataframe]"
Run Code Online (Sandbox Code Playgroud)

或者如果你已经安装了熊猫,你就会得到import dask.dataframe as dd.所以.

为了使用Dask的并行数据帧(构建在pandas之上),你必须告诉pip安装一些"extras"(引用),如Dask安装文档中所述:

pip install "dask[complete]"
Run Code Online (Sandbox Code Playgroud)

或者你可以做的ImportError: No module named cloudpickle就是获得整套技巧.注意:shell中可能不需要双引号.

Dask文档中还提到了对此的理由:

我们这样做是为了让轻量级核心dask调度程序的用户不需要下载集合中更具异国情调的依赖项(numpy,pandas等)