Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
rasbt
GitHub Repository: rasbt/machine-learning-book
Path: blob/main/python_environment_check.py
1244 views
1
import sys
2
from distutils.version import LooseVersion
3
4
if LooseVersion(sys.version) < LooseVersion('3.8'):
5
print('[FAIL] We recommend Python 3.8 or newer but'
6
' found version %s' % (sys.version))
7
else:
8
print('[OK] Your Python version is %s' % (sys.version))
9
10
11
def get_packages(pkgs):
12
versions = []
13
for p in pkgs:
14
try:
15
imported = __import__(p)
16
try:
17
versions.append(imported.__version__)
18
except AttributeError:
19
try:
20
versions.append(imported.version)
21
except AttributeError:
22
try:
23
versions.append(imported.version_info)
24
except AttributeError:
25
versions.append('0.0')
26
except ImportError:
27
print(f'[FAIL]: {p} is not installed and/or cannot be imported.')
28
versions.append('N/A')
29
return versions
30
31
32
def check_packages(d):
33
34
versions = get_packages(d.keys())
35
36
for (pkg_name, suggested_ver), actual_ver in zip(d.items(), versions):
37
if actual_ver == 'N/A':
38
continue
39
actual_ver, suggested_ver = LooseVersion(actual_ver), LooseVersion(suggested_ver)
40
if pkg_name == "matplotlib" and actual_ver == LooseVersion("3.8"):
41
print(f'[FAIL] {pkg_name} {actual_ver}, please upgrade to {suggested_ver} >= matplotlib > 3.8')
42
elif actual_ver < suggested_ver:
43
print(f'[FAIL] {pkg_name} {actual_ver}, please upgrade to >= {suggested_ver}')
44
else:
45
print(f'[OK] {pkg_name} {actual_ver}')
46
47
48
49
if __name__ == '__main__':
50
d = {
51
'numpy': '1.21.2',
52
'scipy': '1.7.0',
53
'matplotlib': '3.4.3',
54
'sklearn': '1.0',
55
'pandas': '1.3.2'
56
}
57
check_packages(d)
58
59