-
Notifications
You must be signed in to change notification settings - Fork 1
/
check_python_environment.py
61 lines (52 loc) · 1.68 KB
/
check_python_environment.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
"""
@Description: 运行此文件来检查必要的python包
@Author(s): Stephen CUI
@LastEditor(s): Stephen CUI
@CreatedTime: 2023-07-18 13:12:11
"""
import sys
import platform
from packaging import version
python_ver = platform.python_version()
if version.parse(python_ver) < version.parse('3.8'):
print(
f'[FAIL] We recommend Python 3.8 or later but found version {sys.version}')
else:
print(f'[OK] Your Python version is {sys.version}')
def get_packages(pkgs) -> list:
versions = []
for p in pkgs:
try:
imported = __import__(p)
try:
versions.append(imported.__version__)
except AttributeError:
try:
versions.append(imported.version_info)
except AttributeError:
versions.append('0.0')
except ImportError:
print(f'[FAIL]: {p} is not installed and/or cannot be imported')
versions.append('N/A')
return versions
def check_packages(d: dict) -> None:
versions = get_packages(d.keys())
for (pkg_name, suggest_ver), actual_ver in zip(d.items(), versions):
if actual_ver == 'N/A':
continue
actual_ver, suggest_ver = version.parse(
actual_ver), version.parse(suggest_ver)
if actual_ver < suggest_ver:
print(
f'[FAIL] {pkg_name} {actual_ver}, please upgrade to >= {suggest_ver}')
else:
print(f'[OK] {pkg_name} {actual_ver}')
if __name__ == '__main__':
d = {
'numpy': '1.21.2',
'scipy': '1.7.0',
'matplotlib': '3.4.3',
'sklearn': '1.0',
'pandas': '1.3.2'
}
check_packages(d)