|
1 | 1 | import os
|
2 | 2 | import platform
|
3 | 3 | import sys
|
| 4 | +import struct |
4 | 5 |
|
| 6 | +def get_sys_info(): |
| 7 | + "Returns system information as a dict" |
5 | 8 |
|
6 |
| -def show_versions(): |
7 |
| - print("\nINSTALLED VERSIONS") |
8 |
| - print("------------------") |
9 |
| - print("Python: %d.%d.%d.%s.%s" % sys.version_info[:]) |
10 |
| - |
| 9 | + # list of tuples over dict because OrderedDict not in 2.6, least |
| 10 | + # resistance. |
| 11 | + blob = [] |
11 | 12 | try:
|
12 | 13 | sysname, nodename, release, version, machine, processor = platform.uname()
|
13 |
| - print("OS: %s" % (sysname)) |
14 |
| - print("Release: %s" % (release)) |
15 |
| - #print("Version: %s" % (version)) |
16 |
| - #print("Machine: %s" % (machine)) |
17 |
| - print("Processor: %s" % (processor)) |
18 |
| - print("byteorder: %s" % sys.byteorder) |
19 |
| - print("LC_ALL: %s" % os.environ.get('LC_ALL', "None")) |
20 |
| - print("LANG: %s" % os.environ.get('LANG', "None")) |
| 14 | + blob = [ |
| 15 | + ("python", "%d.%d.%d.%s.%s" % sys.version_info[:]), |
| 16 | + ("python-bits", struct.calcsize("P") * 8), |
| 17 | + ("OS","%s" % (sysname)), |
| 18 | + ("OS-release", "%s" % (release)), |
| 19 | + # ("Version", "%s" % (version)), |
| 20 | + # ("Machine", "%s" % (machine)), |
| 21 | + ("processor", "%s" % (processor)), |
| 22 | + ("byteorder", "%s" % sys.byteorder), |
| 23 | + ("LC_ALL", "%s" % os.environ.get('LC_ALL', "None")), |
| 24 | + ("LANG", "%s" % os.environ.get('LANG', "None")), |
| 25 | + |
| 26 | + ] |
21 | 27 | except:
|
22 | 28 | pass
|
23 | 29 |
|
24 |
| - print("") |
25 |
| - |
26 |
| - try: |
27 |
| - import pandas |
28 |
| - print("pandas: %s" % pandas.__version__) |
29 |
| - except: |
30 |
| - print("pandas: Not installed") |
31 |
| - |
32 |
| - try: |
33 |
| - import Cython |
34 |
| - print("Cython: %s" % Cython.__version__) |
35 |
| - except: |
36 |
| - print("Cython: Not installed") |
37 |
| - |
38 |
| - try: |
39 |
| - import numpy |
40 |
| - print("Numpy: %s" % numpy.version.version) |
41 |
| - except: |
42 |
| - print("Numpy: Not installed") |
43 |
| - |
44 |
| - try: |
45 |
| - import scipy |
46 |
| - print("Scipy: %s" % scipy.version.version) |
47 |
| - except: |
48 |
| - print("Scipy: Not installed") |
49 |
| - |
50 |
| - try: |
51 |
| - import statsmodels |
52 |
| - print("statsmodels: %s" % statsmodels.__version__) |
53 |
| - except: |
54 |
| - print("statsmodels: Not installed") |
55 |
| - try: |
56 |
| - import patsy |
57 |
| - print(" patsy: %s" % patsy.__version__) |
58 |
| - except: |
59 |
| - print(" patsy: Not installed") |
60 |
| - |
61 |
| - try: |
62 |
| - import scikits.timeseries as ts |
63 |
| - print("scikits.timeseries: %s" % ts.__version__) |
64 |
| - except: |
65 |
| - print("scikits.timeseries: Not installed") |
66 |
| - |
67 |
| - try: |
68 |
| - import dateutil |
69 |
| - print("dateutil: %s" % dateutil.__version__) |
70 |
| - except: |
71 |
| - print("dateutil: Not installed") |
72 |
| - |
73 |
| - try: |
74 |
| - import pytz |
75 |
| - print("pytz: %s" % pytz.VERSION) |
76 |
| - except: |
77 |
| - print("pytz: Not installed") |
78 |
| - |
79 |
| - try: |
80 |
| - import bottleneck |
81 |
| - print("bottleneck: %s" % bottleneck.__version__) |
82 |
| - except: |
83 |
| - print("bottleneck: Not installed") |
84 |
| - |
85 |
| - try: |
86 |
| - import tables |
87 |
| - print("PyTables: %s" % tables.__version__) |
88 |
| - except: |
89 |
| - print("PyTables: Not Installed") |
90 |
| - |
91 |
| - try: |
92 |
| - import numexpr |
93 |
| - print(" numexpr: %s" % numexpr.__version__) |
94 |
| - except: |
95 |
| - print(" numexpr: Not Installed") |
96 |
| - |
97 |
| - try: |
98 |
| - import matplotlib |
99 |
| - print("matplotlib: %s" % matplotlib.__version__) |
100 |
| - except: |
101 |
| - print("matplotlib: Not installed") |
102 |
| - |
103 |
| - try: |
104 |
| - import openpyxl |
105 |
| - print("openpyxl: %s" % openpyxl.__version__) |
106 |
| - except: |
107 |
| - print("openpyxl: Not installed") |
108 |
| - |
109 |
| - try: |
110 |
| - import xlrd |
111 |
| - print("xlrd: %s" % xlrd.__VERSION__) |
112 |
| - except: |
113 |
| - print("xlrd: Not installed") |
114 |
| - |
115 |
| - try: |
116 |
| - import xlwt |
117 |
| - print("xlwt: %s" % xlwt.__VERSION__) |
118 |
| - except: |
119 |
| - print("xlwt: Not installed") |
120 |
| - |
121 |
| - try: |
122 |
| - import xlsxwriter |
123 |
| - print("xlsxwriter: %s" % xlsxwriter.__version__) |
124 |
| - except: |
125 |
| - print("xlsxwriter: Not installed") |
126 |
| - |
127 |
| - try: |
128 |
| - import sqlalchemy |
129 |
| - print("sqlalchemy: %s" % sqlalchemy.__version__) |
130 |
| - except: |
131 |
| - print("sqlalchemy: Not installed") |
132 |
| - |
133 |
| - try: |
134 |
| - import lxml |
135 |
| - from lxml import etree |
136 |
| - print("lxml: %s" % etree.__version__) |
137 |
| - except: |
138 |
| - print("lxml: Not installed") |
139 |
| - |
140 |
| - try: |
141 |
| - import bs4 |
142 |
| - print("bs4: %s" % bs4.__version__) |
143 |
| - except: |
144 |
| - print("bs4: Not installed") |
145 |
| - |
146 |
| - try: |
147 |
| - import html5lib |
148 |
| - print("html5lib: %s" % html5lib.__version__) |
149 |
| - except: |
150 |
| - print("html5lib: Not installed") |
151 |
| - |
152 |
| - try: |
153 |
| - import bq |
154 |
| - print("bigquery: %s" % bq._VersionNumber()) |
155 |
| - except: |
156 |
| - print("bigquery: Not installed") |
157 |
| - |
158 |
| - try: |
159 |
| - import apiclient |
160 |
| - print("apiclient: %s" % apiclient.__version__) |
161 |
| - except: |
162 |
| - print("apiclient: Not installed") |
163 |
| - |
| 30 | + return blob |
| 31 | + |
| 32 | + |
| 33 | +def show_versions(as_json=False): |
| 34 | + import imp |
| 35 | + sys_info = get_sys_info() |
| 36 | + |
| 37 | + deps = [ |
| 38 | + # (MODULE_NAME, f(mod) -> mod version) |
| 39 | + ("pandas", lambda mod: mod.__version__), |
| 40 | + ("Cython", lambda mod: mod.__version__), |
| 41 | + ("numpy", lambda mod: mod.version.version), |
| 42 | + ("scipy", lambda mod: mod.version.version), |
| 43 | + ("statsmodels", lambda mod: mod.__version__), |
| 44 | + ("patsy", lambda mod: mod.__version__), |
| 45 | + ("scikits.timeseries", lambda mod: mod.__version__), |
| 46 | + ("dateutil", lambda mod: mod.__version__), |
| 47 | + ("pytz", lambda mod: mod.VERSION), |
| 48 | + ("bottleneck", lambda mod: mod.__version__), |
| 49 | + ("tables", lambda mod: mod.__version__), |
| 50 | + ("numexpr", lambda mod: mod.__version__), |
| 51 | + ("matplotlib", lambda mod: mod.__version__), |
| 52 | + ("openpyxl", lambda mod: mod.__version__), |
| 53 | + ("xlrd", lambda mod: mod.__VERSION__), |
| 54 | + ("xlwt", lambda mod: mod.__VERSION__), |
| 55 | + ("xlsxwriter", lambda mod: mod.__version__), |
| 56 | + ("sqlalchemy", lambda mod: mod.__version__), |
| 57 | + ("lxml", lambda mod: mod.etree.__version__), |
| 58 | + ("bs4", lambda mod: mod.__version__), |
| 59 | + ("html5lib", lambda mod: mod.__version__), |
| 60 | + ("bq", lambda mod: mod._VersionNumber()), |
| 61 | + ("apiclient", lambda mod: mod.__version__), |
| 62 | + ] |
| 63 | + |
| 64 | + deps_blob = list() |
| 65 | + for (modname, ver_f) in deps: |
| 66 | + try: |
| 67 | + mod = imp.load_module(modname, *imp.find_module(modname)) |
| 68 | + ver = ver_f(mod) |
| 69 | + deps_blob.append((modname, ver)) |
| 70 | + except: |
| 71 | + deps_blob.append((modname, None)) |
| 72 | + |
| 73 | + if (as_json): |
| 74 | + # 2.6-safe |
| 75 | + try: |
| 76 | + import json |
| 77 | + except: |
| 78 | + import simplejson as json |
| 79 | + |
| 80 | + print(json.dumps(dict(system=dict(sys_info), dependencies=dict(deps_blob)), indent=2)) |
| 81 | + |
| 82 | + else: |
| 83 | + |
| 84 | + print("\nINSTALLED VERSIONS") |
| 85 | + print("------------------") |
| 86 | + |
| 87 | + for k, stat in sys_info: |
| 88 | + print("%s: %s" % (k, stat)) |
| 89 | + |
| 90 | + print("") |
| 91 | + for k, stat in deps_blob: |
| 92 | + print("%s: %s" % (k, stat)) |
164 | 93 |
|
165 | 94 |
|
166 | 95 | if __name__ == "__main__":
|
167 |
| - show_versions() |
| 96 | + show_versions(as_json=False) |
0 commit comments