AttributeError: 'NoneType' object has no attribute 'split'

### Describe the bug

I am using SMOTE to sample a binary classification dataset (churn or not). For multi-label, it works, but when I use the same function on a binary dataset it fails with the following error:

```
AttributeError: 'NoneType' object has no attribute 'split'

Full traceback:

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-9-2fc28e7f2344> in <module>
     12     return data, target
     13 
---> 14 data, target = SMOTE_oversample(churn, 'Churn_Yes')

<ipython-input-9-2fc28e7f2344> in SMOTE_oversample(df, dep_var)
      8     oversample = SMOTE()
      9 
---> 10     data, target = oversample.fit_resample(data, target)
     11 
     12     return data, target

~\AppData\Roaming\Python\Python38\site-packages\imblearn\base.py in fit_resample(self, X, y)
     81         )
     82 
---> 83         output = self._fit_resample(X, y)
     84 
     85         y_ = (

~\AppData\Roaming\Python\Python38\site-packages\imblearn\over_sampling\_smote\base.py in _fit_resample(self, X, y)
    322 
    323             self.nn_k_.fit(X_class)
--> 324             nns = self.nn_k_.kneighbors(X_class, return_distance=False)[:, 1:]
    325             X_new, y_new = self._make_samples(
    326                 X_class, y.dtype, class_sample, X_class, nns, n_samples, 1.0

c:\python38\lib\site-packages\sklearn\neighbors\_base.py in kneighbors(self, X, n_neighbors, return_distance)
    761         )
    762         if use_pairwise_distances_reductions:
--> 763             results = PairwiseDistancesArgKmin.compute(
    764                 X=X,
    765                 Y=self._fit_X,

sklearn\metrics\_pairwise_distances_reduction.pyx in sklearn.metrics._pairwise_distances_reduction.PairwiseDistancesArgKmin.compute()

c:\python38\lib\site-packages\sklearn\utils\fixes.py in threadpool_limits(limits, user_api)
    149         return controller.limit(limits=limits, user_api=user_api)
    150     else:
--> 151         return threadpoolctl.threadpool_limits(limits=limits, user_api=user_api)
    152 
    153 

c:\python38\lib\site-packages\threadpoolctl.py in __init__(self, limits, user_api)
    169             self._check_params(limits, user_api)
    170 
--> 171         self._original_info = self._set_threadpool_limits()
    172 
    173     def __enter__(self):

c:\python38\lib\site-packages\threadpoolctl.py in _set_threadpool_limits(self)
    266             return None
    267 
--> 268         modules = _ThreadpoolInfo(prefixes=self._prefixes,
    269                                   user_api=self._user_api)
    270         for module in modules:

c:\python38\lib\site-packages\threadpoolctl.py in __init__(self, user_api, prefixes, modules)
    338 
    339             self.modules = []
--> 340             self._load_modules()
    341             self._warn_if_incompatible_openmp()
    342         else:

c:\python38\lib\site-packages\threadpoolctl.py in _load_modules(self)
    371             self._find_modules_with_dyld()
    372         elif sys.platform == "win32":
--> 373             self._find_modules_with_enum_process_module_ex()
    374         else:
    375             self._find_modules_with_dl_iterate_phdr()

c:\python38\lib\site-packages\threadpoolctl.py in _find_modules_with_enum_process_module_ex(self)
    483 
    484                 # Store the module if it is supported and selected
--> 485                 self._make_module_from_path(filepath)
    486         finally:
    487             kernel_32.CloseHandle(h_process)

c:\python38\lib\site-packages\threadpoolctl.py in _make_module_from_path(self, filepath)
    513             if prefix in self.prefixes or user_api in self.user_api:
    514                 module_class = globals()[module_class]
--> 515                 module = module_class(filepath, prefix, user_api, internal_api)
    516                 self.modules.append(module)
    517 

c:\python38\lib\site-packages\threadpoolctl.py in __init__(self, filepath, prefix, user_api, internal_api)
    604         self.internal_api = internal_api
    605         self._dynlib = ctypes.CDLL(filepath, mode=_RTLD_NOLOAD)
--> 606         self.version = self.get_version()
    607         self.num_threads = self.get_num_threads()
    608         self._get_extra_info()

c:\python38\lib\site-packages\threadpoolctl.py in get_version(self)
    644                              lambda: None)
    645         get_config.restype = ctypes.c_char_p
--> 646         config = get_config().split()
    647         if config[0] == b"OpenBLAS":
    648             return config[1].decode("utf-8")

AttributeError: 'NoneType' object has no attribute 'split'
```

My code is a simple call and fit:

from imblearn.over_sampling import SMOTE

```
def SMOTE_oversample(df, dep_var):

    data = df.drop([str(dep_var)],1).squeeze()
    target = df[[str(dep_var)]].squeeze()

    smote = SMOTE()

    data, target = smote.fit_resample(data, target)
    
    return data, target

data, target = SMOTE_oversample(churn, 'Churn_Yes')
```

Does anyone know why this error keeps popping up?

### Expected Results

SMOTE to run properly.

### Actual Results

AttributeError: 'NoneType' object has no attribute 'split'

### Versions

```shell
scikit-learn 1.1.2
imbalanced-learn 0.9.1
python 3.8.9
jupyter notebook
```

COMMENT:
That worked, thank you!

For future reference:
`pip install threadpoolctl==3.1.0`
Fixed the problem.

Labels: Bug, Needs Triage