From 125b3c0f2d09d8ac42958b806a2c431aea338108 Mon Sep 17 00:00:00 2001 From: Philip Hyunsu Cho Date: Thu, 17 Dec 2020 01:51:35 -0800 Subject: [PATCH] Lazy import cuDF and Dask (#6522) * Lazy import cuDF * Lazy import Dask Co-authored-by: PSEUDOTENSOR / Jonathan McKinney * Fix lint Co-authored-by: PSEUDOTENSOR / Jonathan McKinney --- python-package/xgboost/compat.py | 11 +++-------- python-package/xgboost/dask.py | 2 +- 2 files changed, 4 insertions(+), 9 deletions(-) diff --git a/python-package/xgboost/compat.py b/python-package/xgboost/compat.py index edde7470c..bfb4d4091 100644 --- a/python-package/xgboost/compat.py +++ b/python-package/xgboost/compat.py @@ -41,12 +41,6 @@ except ImportError: pandas_concat = None PANDAS_INSTALLED = False -# cudf -try: - from cudf import concat as CUDF_concat -except ImportError: - CUDF_concat = None - # sklearn try: from sklearn.base import BaseEstimator @@ -104,9 +98,10 @@ except ImportError: # dask try: - import dask + import pkg_resources + pkg_resources.get_distribution('dask') DASK_INSTALLED = True -except ImportError: +except pkg_resources.DistributionNotFound: dask = None DASK_INSTALLED = False diff --git a/python-package/xgboost/dask.py b/python-package/xgboost/dask.py index 0a1a20c39..f21f70665 100644 --- a/python-package/xgboost/dask.py +++ b/python-package/xgboost/dask.py @@ -27,7 +27,6 @@ from . import rabit, config from .compat import LazyLoader from .compat import sparse, scipy_sparse from .compat import PANDAS_INSTALLED, DataFrame, Series, pandas_concat -from .compat import CUDF_concat from .compat import lazy_isinstance from .core import DMatrix, DeviceQuantileDMatrix, Booster, _expect, DataIter @@ -121,6 +120,7 @@ def concat(value): # pylint: disable=too-many-return-statements return pandas_concat(value, axis=0) if lazy_isinstance(value[0], 'cudf.core.dataframe', 'DataFrame') or \ lazy_isinstance(value[0], 'cudf.core.series', 'Series'): + from cudf import concat as CUDF_concat # pylint: disable=import-error return CUDF_concat(value, axis=0) if lazy_isinstance(value[0], 'cupy.core.core', 'ndarray'): import cupy # pylint: disable=import-error