Dask导入异常:Dataframe正常但Client无法导入,版本兼容问题求助
问题:Dask与Distributed版本不兼容导致Client导入失败
并非所有版本的dask.dataframe和pandas都兼容,我尝试了多组版本组合:在Python 3.10.12环境下使用dask 2023.2.0和pandas 2.1.2时,dask.dataframe能正常工作,但执行from distributed import Client时触发报错:
File "/mypath/progs/myprog.py", line 16, in <module> from distributed import Client File "/usr/lib/python3/dist-packages/distributed/__init__.py", line 23, in <module> from .deploy import Adaptive, LocalCluster, SpecCluster, SSHCluster File "/usr/lib/python3/dist-packages/distributed/deploy/__init__.py", line 5, in <module> from .local import LocalCluster File "/usr/lib/python3/dist-packages/distributed/deploy/local.py", line 15, in <module> from .utils import nprocesses_nthreads File "/usr/lib/python3/dist-packages/distributed/deploy/utils.py", line 4, in <module> from dask.utils import factors ImportError: cannot import name 'factors' from 'dask.utils' (/mypath/.local/lib/python3.10/site-packages/dask/utils.py)
不确定这是否还和Pandas版本有关,想请教:这个问题的原因是什么?如何同时正常使用dask.dataframe和导入Client?
解决方案
这个错误和Pandas无关,核心是Dask和Distributed版本不匹配:
dask.utils.factors函数在较新的Dask版本中已被移除/重命名,但你系统中的Distributed仍是旧版本,仍在尝试导入该函数,导致报错。- 当前你的Dask是用户目录下的2023.2.0版本,而Distributed是系统级旧版本,两者依赖逻辑不兼容。
解决步骤:
统一Dask和Distributed版本
卸载现有版本后,安装官方同步发布的兼容版本组合(Dask和Distributed版本号通常保持一致):pip uninstall dask distributed -y pip install dask==2023.2.0 distributed==2023.2.0用虚拟环境隔离依赖
避免系统包和用户本地包冲突,创建虚拟环境后再安装全套依赖:python3.10 -m venv dask_env source dask_env/bin/activate pip install dask==2023.2.0 distributed==2023.2.0 pandas==2.1.2验证安装
激活环境后执行以下代码测试:import dask.dataframe as dd from distributed import Client print("导入成功")
内容的提问来源于stack exchange,提问作者Waterkant
相关产品推荐
相关产品推荐

