10000 Don't import pkg_resources unless we need to parse dev version numbers. · scikit-learn/scikit-learn@a62d442 · GitHub
[go: up one dir, main page]

Skip to content

Commit a62d442

Browse files
committed
Don't import pkg_resources unless we need to parse dev version numbers.
pkg_resources can be very slow to import, although this depends on the details of the python setup. On my machine, this PR speeds up `import sklearn` (with no dev versions of anything other than sklearn installed) by ~33%, from ~550ms to ~360ms.
1 parent 42e90e9 commit a62d442

File tree

1 file changed

+12
-5
lines changed

1 file changed

+12
-5
lines changed

sklearn/utils/fixes.py

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,18 @@
2424

2525
from .deprecation import deprecated
2626

27-
try:
28-
from pkg_resources import parse_version # type: ignore
29-
except ImportError:
30-
# setuptools not installed
31-
parse_version = LooseVersion # type: ignore
27+
28+
def parse_version(v):
29+
if not set(v) <= set("0123456789."):
30+
# Avoid importing pkg_resources (which is slow) unless we need to parse
31+
# dev version numbers.
32+
try:
33+
import pkg_resources
34+
except ImportError: # setuptools not installed.
35+
pass
36+
else:
37+
return pkg_resources.parse_version(v)
38+
return LooseVersion(v)
3239

3340

3441
np_version = parse_version(np.__version__)

0 commit comments

Comments
 (0)
0