web-dev-qa-db-ja.com

Daskのデフォルトのpipインストールで「ImportError:no tool moduleという名前のモジュール」が表示される

私は Dask を次のようにpipを使用してインストールしました:

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

ドキュメント の状態に気づきました

pip install dask:標準ライブラリのみに依存するdaskのみをインストールします。これは、タスクスケジューラのみが必要な場合に適しています。

なぜこれがうまくいかなかったのか混乱しています。

14
TheDudeAbides

Daskの並列​​化されたデータフレーム(パンダの上に構築された)を使用するには、 Daskのインストールドキュメント で説明されているように、pipに「エクストラ」( 参照 )をインストールするように指示する必要があります。 =:

pip install "dask[dataframe]"

または、あなたはただ行うことができます

pip install "dask[complete]"

トリックの袋全体を手に入れるため。 NB:二重引用符はシェルで必要な場合と必要でない場合があります。

これの正当性はDaskのドキュメントで言及されています(または言及されていました)。

これを行うのは、軽量コアdaskスケジューラのユーザーが、コレクションのよりエキゾチックな依存関係(numpy、pandasなど)をダウンロードする必要がないようにするためです。

Obinna's answer で述べたように、virtualenv内でこれを実行するか、管理者権限がない場合はpip install --userを使用してライブラリをホームディレクトリに配置できます。ホストOSに。

追加の詳細

Dask 0.13.0以下では、dask/async.py内の toolz 'identity関数に対する要件がありました。有る オープン GitHubに関連付けられたクローズされたプルリクエスト issue#1849 この依存関係を削除します。 その間 何らかの理由で古いバージョンのdaskが表示されない場合は、pip install toolzを実行するだけでthat特定の問題を回避できます。

しかし、これでimport dask.dataframe as ddの問題が(完全に)修正されるわけではありません。まだthisエラーが発生するため:

>>> 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

または、pandasがすでにインストールされている場合は、ImportError: No module named cloudpickleを取得します。したがって、この状況ではpip install "dask[dataframe]"が適しています。

16
TheDudeAbides

私はこれと同じ問題を抱えていて、これが私のためにそれを修正したものでした。

  1. プロジェクトの仮想環境を作成する
  2. プロジェクトディレクトリのCd(ディレクトリナビゲーションに問題がない場合は不要)
  3. 仮想環境をアクティブ化
  4. pip install "dask[complete]":すべてをインストールします。データフレームなどの特定のコンポーネントのみをインストールしてから、pip install "dask[dataframe]"

肝心なことは、私は自分の仮想環境にいなければならないということでした。これにより、この環境にのみdaskがインストールされます。

1
Obinna Nnenanya

requirements.txtが機能しています:

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

私のために問題を解決しました。

0
0x01h