95 lines
1.9 KiB
Python
95 lines
1.9 KiB
Python
|
"""
|
||
|
Utility methods to print system info for debugging
|
||
|
|
||
|
adapted from :func:`pandas.show_versions`
|
||
|
"""
|
||
|
# License: BSD 3 clause
|
||
|
|
||
|
import platform
|
||
|
import sys
|
||
|
import importlib
|
||
|
|
||
|
from ._openmp_helpers import _openmp_parallelism_enabled
|
||
|
|
||
|
|
||
|
def _get_sys_info():
|
||
|
"""System information
|
||
|
|
||
|
Return
|
||
|
------
|
||
|
sys_info : dict
|
||
|
system and Python version information
|
||
|
|
||
|
"""
|
||
|
python = sys.version.replace('\n', ' ')
|
||
|
|
||
|
blob = [
|
||
|
("python", python),
|
||
|
('executable', sys.executable),
|
||
|
("machine", platform.platform()),
|
||
|
]
|
||
|
|
||
|
return dict(blob)
|
||
|
|
||
|
|
||
|
def _get_deps_info():
|
||
|
"""Overview of the installed version of main dependencies
|
||
|
|
||
|
Returns
|
||
|
-------
|
||
|
deps_info: dict
|
||
|
version information on relevant Python libraries
|
||
|
|
||
|
"""
|
||
|
deps = [
|
||
|
"pip",
|
||
|
"setuptools",
|
||
|
"sklearn",
|
||
|
"numpy",
|
||
|
"scipy",
|
||
|
"Cython",
|
||
|
"pandas",
|
||
|
"matplotlib",
|
||
|
"joblib",
|
||
|
"threadpoolctl"
|
||
|
]
|
||
|
|
||
|
def get_version(module):
|
||
|
return module.__version__
|
||
|
|
||
|
deps_info = {}
|
||
|
|
||
|
for modname in deps:
|
||
|
try:
|
||
|
if modname in sys.modules:
|
||
|
mod = sys.modules[modname]
|
||
|
else:
|
||
|
mod = importlib.import_module(modname)
|
||
|
ver = get_version(mod)
|
||
|
deps_info[modname] = ver
|
||
|
except ImportError:
|
||
|
deps_info[modname] = None
|
||
|
|
||
|
return deps_info
|
||
|
|
||
|
|
||
|
def show_versions():
|
||
|
"""Print useful debugging information"
|
||
|
|
||
|
.. versionadded:: 0.20
|
||
|
"""
|
||
|
|
||
|
sys_info = _get_sys_info()
|
||
|
deps_info = _get_deps_info()
|
||
|
|
||
|
print('\nSystem:')
|
||
|
for k, stat in sys_info.items():
|
||
|
print("{k:>10}: {stat}".format(k=k, stat=stat))
|
||
|
|
||
|
print('\nPython dependencies:')
|
||
|
for k, stat in deps_info.items():
|
||
|
print("{k:>13}: {stat}".format(k=k, stat=stat))
|
||
|
|
||
|
print("\n{k}: {stat}".format(k="Built with OpenMP",
|
||
|
stat=_openmp_parallelism_enabled()))
|