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

### Describe the bug

I am trying to use DBSCAN to do clustering on a normalized np.ndarray (571,128) named all_encodings.
I use VSCode on Mac M1.


### Steps/Code to Reproduce

```py
from sklearn.cluster import DBSCAN
all_encodings = normalize(all_encodings)
all_encodings.shape
display(all_encodings.shape, type(all_encodings))

dbscan_cluster_model = DBSCAN(eps=0.2, min_samples=15)
dbscan_cluster_model.fit(all_encodings)
```

### Expected Results

DBSCAN to cluster properly.


### Actual Results

```
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
Cell In[42], [line 8](vscode-notebook-cell:?execution_count=42&line=8)
      [6](vscode-notebook-cell:?execution_count=42&line=6) display(all_encodings.shape, type(all_encodings))
      [7](vscode-notebook-cell:?execution_count=42&line=7) plt.scatter(all_encodings[:,0],all_encodings[:,4])
----> [8](vscode-notebook-cell:?execution_count=42&line=8) dbscan_cluster_model.fit(all_encodings)

File ~/anaconda3/lib/python3.11/site-packages/sklearn/base.py:1151, in _fit_context.<locals>.decorator.<locals>.wrapper(estimator, *args, **kwargs)
   [1144](https://file+.vscode-resource.vscode-cdn.net/Users/nicolasgandoin/Desktop/Test/~/anaconda3/lib/python3.11/site-packages/sklearn/base.py:1144)     estimator._validate_params()
   [1146](https://file+.vscode-resource.vscode-cdn.net/Users/nicolasgandoin/Desktop/Test/~/anaconda3/lib/python3.11/site-packages/sklearn/base.py:1146) with config_context(
   [1147](https://file+.vscode-resource.vscode-cdn.net/Users/nicolasgandoin/Desktop/Test/~/anaconda3/lib/python3.11/site-packages/sklearn/base.py:1147)     skip_parameter_validation=(
   [1148](https://file+.vscode-resource.vscode-cdn.net/Users/nicolasgandoin/Desktop/Test/~/anaconda3/lib/python3.11/site-packages/sklearn/base.py:1148)         prefer_skip_nested_validation or global_skip_validation
   [1149](https://file+.vscode-resource.vscode-cdn.net/Users/nicolasgandoin/Desktop/Test/~/anaconda3/lib/python3.11/site-packages/sklearn/base.py:1149)     )
   [1150](https://file+.vscode-resource.vscode-cdn.net/Users/nicolasgandoin/Desktop/Test/~/anaconda3/lib/python3.11/site-packages/sklearn/base.py:1150) ):
-> [1151](https://file+.vscode-resource.vscode-cdn.net/Users/nicolasgandoin/Desktop/Test/~/anaconda3/lib/python3.11/site-packages/sklearn/base.py:1151)     return fit_method(estimator, *args, **kwargs)

File ~/anaconda3/lib/python3.11/site-packages/sklearn/cluster/_dbscan.py:396, in DBSCAN.fit(self, X, y, sample_weight)
    [394](https://file+.vscode-resource.vscode-cdn.net/Users/nicolasgandoin/Desktop/Test/~/anaconda3/lib/python3.11/site-packages/sklearn/cluster/_dbscan.py:394) neighbors_model.fit(X)
    [395](https://file+.vscode-resource.vscode-cdn.net/Users/nicolasgandoin/Desktop/Test/~/anaconda3/lib/python3.11/site-packages/sklearn/cluster/_dbscan.py:395) # This has worst case O(n^2) memory complexity
--> [396](https://file+.vscode-resource.vscode-cdn.net/Users/nicolasgandoin/Desktop/Test/~/anaconda3/lib/python3.11/site-packages/sklearn/cluster/_dbscan.py:396) neighborhoods = neighbors_model.radius_neighbors(X, return_distance=False)
    [398](https://file+.vscode-resource.vscode-cdn.net/Users/nicolasgandoin/Desktop/Test/~/anaconda3/lib/python3.11/site-packages/sklearn/cluster/_dbscan.py:398) if sample_weight is None:
    [399](https://file+.vscode-resource.vscode-cdn.net/Users/nicolasgandoin/Desktop/Test/~/anaconda3/lib/python3.11/site-packages/sklearn/cluster/_dbscan.py:399)     n_neighbors = np.array([len(neighbors) for neighbors in neighborhoods])

File ~/anaconda3/lib/python3.11/site-packages/sklearn/neighbors/_base.py:1159, in RadiusNeighborsMixin.radius_neighbors(self, X, radius, return_distance, sort_results)
   [1151](https://file+.vscode-resource.vscode-cdn.net/Users/nicolasgandoin/Desktop/Test/~/anaconda3/lib/python3.11/site-packages/sklearn/neighbors/_base.py:1151) use_pairwise_distances_reductions = (
   [1152](https://file+.vscode-resource.vscode-cdn.net/Users/nicolasgandoin/Desktop/Test/~/anaconda3/lib/python3.11/site-packages/sklearn/neighbors/_base.py:1152)     self._fit_method == "brute"
   [1153](https://file+.vscode-resource.vscode-cdn.net/Users/nicolasgandoin/Desktop/Test/~/anaconda3/lib/python3.11/site-packages/sklearn/neighbors/_base.py:1153)     and RadiusNeighbors.is_usable_for(
   [1154](https://file+.vscode-resource.vscode-cdn.net/Users/nicolasgandoin/Desktop/Test/~/anaconda3/lib/python3.11/site-packages/sklearn/neighbors/_base.py:1154)         X if X is not None else self._fit_X, self._fit_X, self.effective_metric_
   [1155](https://file+.vscode-resource.vscode-cdn.net/Users/nicolasgandoin/Desktop/Test/~/anaconda3/lib/python3.11/site-packages/sklearn/neighbors/_base.py:1155)     )
   [1156](https://file+.vscode-resource.vscode-cdn.net/Users/nicolasgandoin/Desktop/Test/~/anaconda3/lib/python3.11/site-packages/sklearn/neighbors/_base.py:1156) )
   [1158](https://file+.vscode-resource.vscode-cdn.net/Users/nicolasgandoin/Desktop/Test/~/anaconda3/lib/python3.11/site-packages/sklearn/neighbors/_base.py:1158) if use_pairwise_distances_reductions:
-> [1159](https://file+.vscode-resource.vscode-cdn.net/Users/nicolasgandoin/Desktop/Test/~/anaconda3/lib/python3.11/site-packages/sklearn/neighbors/_base.py:1159)     results = RadiusNeighbors.compute(
   [1160](https://file+.vscode-resource.vscode-cdn.net/Users/nicolasgandoin/Desktop/Test/~/anaconda3/lib/python3.11/site-packages/sklearn/neighbors/_base.py:1160)         X=X,
   [1161](https://file+.vscode-resource.vscode-cdn.net/Users/nicolasgandoin/Desktop/Test/~/anaconda3/lib/python3.11/site-packages/sklearn/neighbors/_base.py:1161)         Y=self._fit_X,
   [1162](https://file+.vscode-resource.vscode-cdn.net/Users/nicolasgandoin/Desktop/Test/~/anaconda3/lib/python3.11/site-packages/sklearn/neighbors/_base.py:1162)         radius=radius,
   [1163](https://file+.vscode-resource.vscode-cdn.net/Users/nicolasgandoin/Desktop/Test/~/anaconda3/lib/python3.11/site-packages/sklearn/neighbors/_base.py:1163)         metric=self.effective_metric_,
   [1164](https://file+.vscode-resource.vscode-cdn.net/Users/nicolasgandoin/Desktop/Test/~/anaconda3/lib/python3.11/site-packages/sklearn/neighbors/_base.py:1164)         metric_kwargs=self.effective_metric_params_,
   [1165](https://file+.vscode-resource.vscode-cdn.net/Users/nicolasgandoin/Desktop/Test/~/anaconda3/lib/python3.11/site-packages/sklearn/neighbors/_base.py:1165)         strategy="auto",
   [1166](https://file+.vscode-resource.vscode-cdn.net/Users/nicolasgandoin/Desktop/Test/~/anaconda3/lib/python3.11/site-packages/sklearn/neighbors/_base.py:1166)         return_distance=return_distance,
   [1167](https://file+.vscode-resource.vscode-cdn.net/Users/nicolasgandoin/Desktop/Test/~/anaconda3/lib/python3.11/site-packages/sklearn/neighbors/_base.py:1167)         sort_results=sort_results,
   [1168](https://file+.vscode-resource.vscode-cdn.net/Users/nicolasgandoin/Desktop/Test/~/anaconda3/lib/python3.11/site-packages/sklearn/neighbors/_base.py:1168)     )
   [1170](https://file+.vscode-resource.vscode-cdn.net/Users/nicolasgandoin/Desktop/Test/~/anaconda3/lib/python3.11/site-packages/sklearn/neighbors/_base.py:1170) elif (
   [1171](https://file+.vscode-resource.vscode-cdn.net/Users/nicolasgandoin/Desktop/Test/~/anaconda3/lib/python3.11/site-packages/sklearn/neighbors/_base.py:1171)     self._fit_method == "brute" and self.metric == "precomputed" and issparse(X)
   [1172](https://file+.vscode-resource.vscode-cdn.net/Users/nicolasgandoin/Desktop/Test/~/anaconda3/lib/python3.11/site-packages/sklearn/neighbors/_base.py:1172) ):
   [1173](https://file+.vscode-resource.vscode-cdn.net/Users/nicolasgandoin/Desktop/Test/~/anaconda3/lib/python3.11/site-packages/sklearn/neighbors/_base.py:1173)     results = _radius_neighbors_from_graph(
   [1174](https://file+.vscode-resource.vscode-cdn.net/Users/nicolasgandoin/Desktop/Test/~/anaconda3/lib/python3.11/site-packages/sklearn/neighbors/_base.py:1174)         X, radius=radius, return_distance=return_distance
   [1175](https://file+.vscode-resource.vscode-cdn.net/Users/nicolasgandoin/Desktop/Test/~/anaconda3/lib/python3.11/site-packages/sklearn/neighbors/_base.py:1175)     )

File ~/anaconda3/lib/python3.11/site-packages/sklearn/metrics/_pairwise_distances_reduction/_dispatcher.py:402, in RadiusNeighbors.compute(cls, X, Y, radius, metric, chunk_size, metric_kwargs, strategy, return_distance, sort_results)
    [316](https://file+.vscode-resource.vscode-cdn.net/Users/nicolasgandoin/Desktop/Test/~/anaconda3/lib/python3.11/site-packages/sklearn/metrics/_pairwise_distances_reduction/_dispatcher.py:316) """Return the results of the reduction for the given arguments.
    [317](https://file+.vscode-resource.vscode-cdn.net/Users/nicolasgandoin/Desktop/Test/~/anaconda3/lib/python3.11/site-packages/sklearn/metrics/_pairwise_distances_reduction/_dispatcher.py:317) 
    [318](https://file+.vscode-resource.vscode-cdn.net/Users/nicolasgandoin/Desktop/Test/~/anaconda3/lib/python3.11/site-packages/sklearn/metrics/_pairwise_distances_reduction/_dispatcher.py:318) Parameters
   (...)
    [399](https://file+.vscode-resource.vscode-cdn.net/Users/nicolasgandoin/Desktop/Test/~/anaconda3/lib/python3.11/site-packages/sklearn/metrics/_pairwise_distances_reduction/_dispatcher.py:399) returns.
    [400](https://file+.vscode-resource.vscode-cdn.net/Users/nicolasgandoin/Desktop/Test/~/anaconda3/lib/python3.11/site-packages/sklearn/metrics/_pairwise_distances_reduction/_dispatcher.py:400) """
    [401](https://file+.vscode-resource.vscode-cdn.net/Users/nicolasgandoin/Desktop/Test/~/anaconda3/lib/python3.11/site-packages/sklearn/metrics/_pairwise_distances_reduction/_dispatcher.py:401) if X.dtype == Y.dtype == np.float64:
--> [402](https://file+.vscode-resource.vscode-cdn.net/Users/nicolasgandoin/Desktop/Test/~/anaconda3/lib/python3.11/site-packages/sklearn/metrics/_pairwise_distances_reduction/_dispatcher.py:402)     return RadiusNeighbors64.compute(
    [403](https://file+.vscode-resource.vscode-cdn.net/Users/nicolasgandoin/Desktop/Test/~/anaconda3/lib/python3.11/site-packages/sklearn/metrics/_pairwise_distances_reduction/_dispatcher.py:403)         X=X,
    [404](https://file+.vscode-resource.vscode-cdn.net/Users/nicolasgandoin/Desktop/Test/~/anaconda3/lib/python3.11/site-packages/sklearn/metrics/_pairwise_distances_reduction/_dispatcher.py:404)         Y=Y,
    [405](https://file+.vscode-resource.vscode-cdn.net/Users/nicolasgandoin/Desktop/Test/~/anaconda3/lib/python3.11/site-packages/sklearn/metrics/_pairwise_distances_reduction/_dispatcher.py:405)         radius=radius,
    [406](https://file+.vscode-resource.vscode-cdn.net/Users/nicolasgandoin/Desktop/Test/~/anaconda3/lib/python3.11/site-packages/sklearn/metrics/_pairwise_distances_reduction/_dispatcher.py:406)         metric=metric,
    [407](https://file+.vscode-resource.vscode-cdn.net/Users/nicolasgandoin/Desktop/Test/~/anaconda3/lib/python3.11/site-packages/sklearn/metrics/_pairwise_distances_reduction/_dispatcher.py:407)         chunk_size=chunk_size,
    [408](https://file+.vscode-resource.vscode-cdn.net/Users/nicolasgandoin/Desktop/Test/~/anaconda3/lib/python3.11/site-packages/sklearn/metrics/_pairwise_distances_reduction/_dispatcher.py:408)         metric_kwargs=metric_kwargs,
    [409](https://file+.vscode-resource.vscode-cdn.net/Users/nicolasgandoin/Desktop/Test/~/anaconda3/lib/python3.11/site-packages/sklearn/metrics/_pairwise_distances_reduction/_dispatcher.py:409)         strategy=strategy,
    [410](https://file+.vscode-resource.vscode-cdn.net/Users/nicolasgandoin/Desktop/Test/~/anaconda3/lib/python3.11/site-packages/sklearn/metrics/_pairwise_distances_reduction/_dispatcher.py:410)         sort_results=sort_results,
    [411](https://file+.vscode-resource.vscode-cdn.net/Users/nicolasgandoin/Desktop/Test/~/anaconda3/lib/python3.11/site-packages/sklearn/metrics/_pairwise_distances_reduction/_dispatcher.py:411)         return_distance=return_distance,
    [412](https://file+.vscode-resource.vscode-cdn.net/Users/nicolasgandoin/Desktop/Test/~/anaconda3/lib/python3.11/site-packages/sklearn/metrics/_pairwise_distances_reduction/_dispatcher.py:412)     )
    [414](https://file+.vscode-resource.vscode-cdn.net/Users/nicolasgandoin/Desktop/Test/~/anaconda3/lib/python3.11/site-packages/sklearn/metrics/_pairwise_distances_reduction/_dispatcher.py:414) if X.dtype == Y.dtype == np.float32:
    [415](https://file+.vscode-resource.vscode-cdn.net/Users/nicolasgandoin/Desktop/Test/~/anaconda3/lib/python3.11/site-packages/sklearn/metrics/_pairwise_distances_reduction/_dispatcher.py:415)     return RadiusNeighbors32.compute(
    [416](https://file+.vscode-resource.vscode-cdn.net/Users/nicolasgandoin/Desktop/Test/~/anaconda3/lib/python3.11/site-packages/sklearn/metrics/_pairwise_distances_reduction/_dispatcher.py:416)         X=X,
    [417](https://file+.vscode-resource.vscode-cdn.net/Users/nicolasgandoin/Desktop/Test/~/anaconda3/lib/python3.11/site-packages/sklearn/metrics/_pairwise_distances_reduction/_dispatcher.py:417)         Y=Y,
   (...)
    [424](https://file+.vscode-resource.vscode-cdn.net/Users/nicolasgandoin/Desktop/Test/~/anaconda3/lib/python3.11/site-packages/sklearn/metrics/_pairwise_distances_reduction/_dispatcher.py:424)         return_distance=return_distance,
    [425](https://file+.vscode-resource.vscode-cdn.net/Users/nicolasgandoin/Desktop/Test/~/anaconda3/lib/python3.11/site-packages/sklearn/metrics/_pairwise_distances_reduction/_dispatcher.py:425)     )

File sklearn/metrics/_pairwise_distances_reduction/_radius_neighbors.pyx:120, in sklearn.metrics._pairwise_distances_reduction._radius_neighbors.RadiusNeighbors64.compute()

File ~/anaconda3/lib/python3.11/site-packages/sklearn/utils/fixes.py:72, in threadpool_limits(limits, user_api)
     [70](https://file+.vscode-resource.vscode-cdn.net/Users/nicolasgandoin/Desktop/Test/~/anaconda3/lib/python3.11/site-packages/sklearn/utils/fixes.py:70)     return controller.limit(limits=limits, user_api=user_api)
     [71](https://file+.vscode-resource.vscode-cdn.net/Users/nicolasgandoin/Desktop/Test/~/anaconda3/lib/python3.11/site-packages/sklearn/utils/fixes.py:71) else:
---> [72](https://file+.vscode-resource.vscode-cdn.net/Users/nicolasgandoin/Desktop/Test/~/anaconda3/lib/python3.11/site-packages/sklearn/utils/fixes.py:72)     return threadpoolctl.threadpool_limits(limits=limits, user_api=user_api)

File ~/anaconda3/lib/python3.11/site-packages/threadpoolctl.py:171, in threadpool_limits.__init__(self, limits, user_api)
    [167](https://file+.vscode-resource.vscode-cdn.net/Users/nicolasgandoin/Desktop/Test/~/anaconda3/lib/python3.11/site-packages/threadpoolctl.py:167) def __init__(self, limits=None, user_api=None):
    [168](https://file+.vscode-resource.vscode-cdn.net/Users/nicolasgandoin/Desktop/Test/~/anaconda3/lib/python3.11/site-packages/threadpoolctl.py:168)     self._limits, self._user_api, self._prefixes = \
    [169](https://file+.vscode-resource.vscode-cdn.net/Users/nicolasgandoin/Desktop/Test/~/anaconda3/lib/python3.11/site-packages/threadpoolctl.py:169)         self._check_params(limits, user_api)
--> [171](https://file+.vscode-resource.vscode-cdn.net/Users/nicolasgandoin/Desktop/Test/~/anaconda3/lib/python3.11/site-packages/threadpoolctl.py:171)     self._original_info = self._set_threadpool_limits()

File ~/anaconda3/lib/python3.11/site-packages/threadpoolctl.py:268, in threadpool_limits._set_threadpool_limits(self)
    [265](https://file+.vscode-resource.vscode-cdn.net/Users/nicolasgandoin/Desktop/Test/~/anaconda3/lib/python3.11/site-packages/threadpoolctl.py:265) if self._limits is None:
    [266](https://file+.vscode-resource.vscode-cdn.net/Users/nicolasgandoin/Desktop/Test/~/anaconda3/lib/python3.11/site-packages/threadpoolctl.py:266)     return None
--> [268](https://file+.vscode-resource.vscode-cdn.net/Users/nicolasgandoin/Desktop/Test/~/anaconda3/lib/python3.11/site-packages/threadpoolctl.py:268) modules = _ThreadpoolInfo(prefixes=self._prefixes,
    [269](https://file+.vscode-resource.vscode-cdn.net/Users/nicolasgandoin/Desktop/Test/~/anaconda3/lib/python3.11/site-packages/threadpoolctl.py:269)                           user_api=self._user_api)
    [270](https://file+.vscode-resource.vscode-cdn.net/Users/nicolasgandoin/Desktop/Test/~/anaconda3/lib/python3.11/site-packages/threadpoolctl.py:270) for module in modules:
    [271](https://file+.vscode-resource.vscode-cdn.net/Users/nicolasgandoin/Desktop/Test/~/anaconda3/lib/python3.11/site-packages/threadpoolctl.py:271)     # self._limits is a dict {key: num_threads} where key is either
    [272](https://file+.vscode-resource.vscode-cdn.net/Users/nicolasgandoin/Desktop/Test/~/anaconda3/lib/python3.11/site-packages/threadpoolctl.py:272)     # a prefix or a user_api. If a module matches both, the limit
    [273](https://file+.vscode-resource.vscode-cdn.net/Users/nicolasgandoin/Desktop/Test/~/anaconda3/lib/python3.11/site-packages/threadpoolctl.py:273)     # corresponding to the prefix is chosed.
    [274](https://file+.vscode-resource.vscode-cdn.net/Users/nicolasgandoin/Desktop/Test/~/anaconda3/lib/python3.11/site-packages/threadpoolctl.py:274)     if module.prefix in self._limits:

File ~/anaconda3/lib/python3.11/site-packages/threadpoolctl.py:340, in _ThreadpoolInfo.__init__(self, user_api, prefixes, modules)
    [337](https://file+.vscode-resource.vscode-cdn.net/Users/nicolasgandoin/Desktop/Test/~/anaconda3/lib/python3.11/site-packages/threadpoolctl.py:337)     self.user_api = [] if user_api is None else user_api
    [339](https://file+.vscode-resource.vscode-cdn.net/Users/nicolasgandoin/Desktop/Test/~/anaconda3/lib/python3.11/site-packages/threadpoolctl.py:339)     self.modules = []
--> [340](https://file+.vscode-resource.vscode-cdn.net/Users/nicolasgandoin/Desktop/Test/~/anaconda3/lib/python3.11/site-packages/threadpoolctl.py:340)     self._load_modules()
    [341](https://file+.vscode-resource.vscode-cdn.net/Users/nicolasgandoin/Desktop/Test/~/anaconda3/lib/python3.11/site-packages/threadpoolctl.py:341)     self._warn_if_incompatible_openmp()
    [342](https://file+.vscode-resource.vscode-cdn.net/Users/nicolasgandoin/Desktop/Test/~/anaconda3/lib/python3.11/site-packages/threadpoolctl.py:342) else:

File ~/anaconda3/lib/python3.11/site-packages/threadpoolctl.py:371, in _ThreadpoolInfo._load_modules(self)
    [369](https://file+.vscode-resource.vscode-cdn.net/Users/nicolasgandoin/Desktop/Test/~/anaconda3/lib/python3.11/site-packages/threadpoolctl.py:369) """Loop through loaded libraries and store supported ones"""
    [370](https://file+.vscode-resource.vscode-cdn.net/Users/nicolasgandoin/Desktop/Test/~/anaconda3/lib/python3.11/site-packages/threadpoolctl.py:370) if sys.platform == "darwin":
--> [371](https://file+.vscode-resource.vscode-cdn.net/Users/nicolasgandoin/Desktop/Test/~/anaconda3/lib/python3.11/site-packages/threadpoolctl.py:371)     self._find_modules_with_dyld()
    [372](https://file+.vscode-resource.vscode-cdn.net/Users/nicolasgandoin/Desktop/Test/~/anaconda3/lib/python3.11/site-packages/threadpoolctl.py:372) elif sys.platform == "win32":
    [373](https://file+.vscode-resource.vscode-cdn.net/Users/nicolasgandoin/Desktop/Test/~/anaconda3/lib/python3.11/site-packages/threadpoolctl.py:373)     self._find_modules_with_enum_process_module_ex()

File ~/anaconda3/lib/python3.11/site-packages/threadpoolctl.py:428, in _ThreadpoolInfo._find_modules_with_dyld(self)
    [425](https://file+.vscode-resource.vscode-cdn.net/Users/nicolasgandoin/Desktop/Test/~/anaconda3/lib/python3.11/site-packages/threadpoolctl.py:425) filepath = filepath.decode("utf-8")
    [427](https://file+.vscode-resource.vscode-cdn.net/Users/nicolasgandoin/Desktop/Test/~/anaconda3/lib/python3.11/site-packages/threadpoolctl.py:427) # Store the module if it is supported and selected
--> [428](https://file+.vscode-resource.vscode-cdn.net/Users/nicolasgandoin/Desktop/Test/~/anaconda3/lib/python3.11/site-packages/threadpoolctl.py:428) self._make_module_from_path(filepath)

File ~/anaconda3/lib/python3.11/site-packages/threadpoolctl.py:515, in _ThreadpoolInfo._make_module_from_path(self, filepath)
    [513](https://file+.vscode-resource.vscode-cdn.net/Users/nicolasgandoin/Desktop/Test/~/anaconda3/lib/python3.11/site-packages/threadpoolctl.py:513) if prefix in self.prefixes or user_api in self.user_api:
    [514](https://file+.vscode-resource.vscode-cdn.net/Users/nicolasgandoin/Desktop/Test/~/anaconda3/lib/python3.11/site-packages/threadpoolctl.py:514)     module_class = globals()[module_class]
--> [515](https://file+.vscode-resource.vscode-cdn.net/Users/nicolasgandoin/Desktop/Test/~/anaconda3/lib/python3.11/site-packages/threadpoolctl.py:515)     module = module_class(filepath, prefix, user_api, internal_api)
    [516](https://file+.vscode-resource.vscode-cdn.net/Users/nicolasgandoin/Desktop/Test/~/anaconda3/lib/python3.11/site-packages/threadpoolctl.py:516)     self.modules.append(module)

File ~/anaconda3/lib/python3.11/site-packages/threadpoolctl.py:606, in _Module.__init__(self, filepath, prefix, user_api, internal_api)
    [604](https://file+.vscode-resource.vscode-cdn.net/Users/nicolasgandoin/Desktop/Test/~/anaconda3/lib/python3.11/site-packages/threadpoolctl.py:604) self.internal_api = internal_api
    [605](https://file+.vscode-resource.vscode-cdn.net/Users/nicolasgandoin/Desktop/Test/~/anaconda3/lib/python3.11/site-packages/threadpoolctl.py:605) self._dynlib = ctypes.CDLL(filepath, mode=_RTLD_NOLOAD)
--> [606](https://file+.vscode-resource.vscode-cdn.net/Users/nicolasgandoin/Desktop/Test/~/anaconda3/lib/python3.11/site-packages/threadpoolctl.py:606) self.version = self.get_version()
    [607](https://file+.vscode-resource.vscode-cdn.net/Users/nicolasgandoin/Desktop/Test/~/anaconda3/lib/python3.11/site-packages/threadpoolctl.py:607) self.num_threads = self.get_num_threads()
    [608](https://file+.vscode-resource.vscode-cdn.net/Users/nicolasgandoin/Desktop/Test/~/anaconda3/lib/python3.11/site-packages/threadpoolctl.py:608) self._get_extra_info()

File ~/anaconda3/lib/python3.11/site-packages/threadpoolctl.py:646, in _OpenBLASModule.get_version(self)
    [643](https://file+.vscode-resource.vscode-cdn.net/Users/nicolasgandoin/Desktop/Test/~/anaconda3/lib/python3.11/site-packages/threadpoolctl.py:643) get_config = getattr(self._dynlib, "openblas_get_config",
    [644](https://file+.vscode-resource.vscode-cdn.net/Users/nicolasgandoin/Desktop/Test/~/anaconda3/lib/python3.11/site-packages/threadpoolctl.py:644)                      lambda: None)
    [645](https://file+.vscode-resource.vscode-cdn.net/Users/nicolasgandoin/Desktop/Test/~/anaconda3/lib/python3.11/site-packages/threadpoolctl.py:645) get_config.restype = ctypes.c_char_p
--> [646](https://file+.vscode-resource.vscode-cdn.net/Users/nicolasgandoin/Desktop/Test/~/anaconda3/lib/python3.11/site-packages/threadpoolctl.py:646) config = get_config().split()
    [647](https://file+.vscode-resource.vscode-cdn.net/Users/nicolasgandoin/Desktop/Test/~/anaconda3/lib/python3.11/site-packages/threadpoolctl.py:647) if config[0] == b"OpenBLAS":
    [648](https://file+.vscode-resource.vscode-cdn.net/Users/nicolasgandoin/Desktop/Test/~/anaconda3/lib/python3.11/site-packages/threadpoolctl.py:648)     return config[1].decode("utf-8")

**AttributeError: 'NoneType' object has no attribute 'split'**
```

### Versions

```shell
System:
    python: 3.11.5 (main, Sep 11 2023, 08:31:25) [Clang 14.0.6 ]
executable: /Users/nicolasgandoin/anaconda3/bin/python
   machine: macOS-15.2-arm64-arm-64bit

Python dependencies:
      sklearn: 1.3.0
          pip: 23.2.1
   setuptools: 68.0.0
        numpy: 1.24.4
        scipy: 1.11.1
       Cython: None
       pandas: 2.0.3
   matplotlib: 3.7.2
       joblib: 1.4.2
threadpoolctl: 2.2.0

Built with OpenMP: True


---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
Cell In[45], line 1
----> 1 import sklearn; sklearn.show_versions()

File ~/anaconda3/lib/python3.11/site-packages/sklearn/utils/_show_versions.py:98, in show_versions()
     91 print(
     92     "\n{k}: {stat}".format(
     93         k="Built with OpenMP", stat=_openmp_parallelism_enabled()
     94     )
     95 )
     97 # show threadpoolctl results
---> 98 threadpool_results = threadpool_info()
     99 if threadpool_results:
    100     print()

File ~/anaconda3/lib/python3.11/site-packages/sklearn/utils/fixes.py:83, in threadpool_info()
     81     return controller.info()
     82 else:
---> 83     return threadpoolctl.threadpool_info()

File ~/anaconda3/lib/python3.11/site-packages/threadpoolctl.py:124, in threadpool_info()
    107 @_format_docstring(USER_APIS=list(_ALL_USER_APIS),
    108                    INTERNAL_APIS=_ALL_INTERNAL_APIS)
    109 def threadpool_info():
    110     """Return the maximal number of threads for each detected library.
    111 
    112     Return a list with all the supported modules that have been found. Each
   (...)
    122     In addition, each module may contain internal_api specific entries.
    123     """
--> 124     return _ThreadpoolInfo(user_api=_ALL_USER_APIS).todicts()

File ~/anaconda3/lib/python3.11/site-packages/threadpoolctl.py:340, in _ThreadpoolInfo.__init__(self, user_api, prefixes, modules)
    337     self.user_api = [] if user_api is None else user_api
    339     self.modules = []
--> 340     self._load_modules()
    341     self._warn_if_incompatible_openmp()
    342 else:

File ~/anaconda3/lib/python3.11/site-packages/threadpoolctl.py:371, in _ThreadpoolInfo._load_modules(self)
    369 """Loop through loaded libraries and store supported ones"""
    370 if sys.platform == "darwin":
--> 371     self._find_modules_with_dyld()
    372 elif sys.platform == "win32":
    373     self._find_modules_with_enum_process_module_ex()

File ~/anaconda3/lib/python3.11/site-packages/threadpoolctl.py:428, in _ThreadpoolInfo._find_modules_with_dyld(self)
    425 filepath = filepath.decode("utf-8")
    427 # Store the module if it is supported and selected
--> 428 self._make_module_from_path(filepath)

File ~/anaconda3/lib/python3.11/site-packages/threadpoolctl.py:515, in _ThreadpoolInfo._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)

File ~/anaconda3/lib/python3.11/site-packages/threadpoolctl.py:606, in _Module.__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()

File ~/anaconda3/lib/python3.11/site-packages/threadpoolctl.py:646, in _OpenBLASModule.get_version(self)
    643 get_config = getattr(self._dynlib, "openblas_get_config",
    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'
```

COMMENT:
Can you try updating to threadpoolctl>=3.1 and see whether that fixes your issue? See https://github.com/scikit-learn/scikit-learn/issues/24238#issuecomment-1225847078.

If your problem is still here, it would help a lot if you can provide a [self-contained example code](https://scikit-learn.org/dev/developers/minimal_reproducer.html), including imports and data (if possible), so that other contributors can just run it and reproduce your issue. Ideally your example code should be minimal.

Labels: Bug, Needs Info