blob: 60c6089ad3ccb5820b0e714f7e15ccfb055f5e6c [file] [log] [blame]
Georg Brandl0eaab972009-06-08 08:00:22 +00001:mod:`platform` --- Access to underlying platform's identifying data
2=====================================================================
Georg Brandl116aa622007-08-15 14:28:22 +00003
4.. module:: platform
5 :synopsis: Retrieves as much platform identifying data as possible.
Terry Jan Reedyfa089b92016-06-11 15:02:54 -04006
Antoine Pitroufbd4f802012-08-11 16:51:50 +02007.. moduleauthor:: Marc-André Lemburg <mal@egenix.com>
Georg Brandl116aa622007-08-15 14:28:22 +00008.. sectionauthor:: Bjorn Pettersen <bpettersen@corp.fairisaac.com>
9
Raymond Hettinger469271d2011-01-27 20:38:46 +000010**Source code:** :source:`Lib/platform.py`
11
12--------------
Georg Brandl116aa622007-08-15 14:28:22 +000013
Georg Brandl116aa622007-08-15 14:28:22 +000014.. note::
15
16 Specific platforms listed alphabetically, with Linux included in the Unix
17 section.
18
19
20Cross Platform
21--------------
22
23
24.. function:: architecture(executable=sys.executable, bits='', linkage='')
25
26 Queries the given executable (defaults to the Python interpreter binary) for
27 various architecture information.
28
29 Returns a tuple ``(bits, linkage)`` which contain information about the bit
30 architecture and the linkage format used for the executable. Both values are
31 returned as strings.
32
33 Values that cannot be determined are returned as given by the parameter presets.
Andrew Svetlova2fe3342012-08-11 21:14:08 +030034 If bits is given as ``''``, the ``sizeof(pointer)`` (or
35 ``sizeof(long)`` on Python version < 1.5.2) is used as indicator for the
Georg Brandl116aa622007-08-15 14:28:22 +000036 supported pointer size.
37
38 The function relies on the system's :file:`file` command to do the actual work.
39 This is available on most if not all Unix platforms and some non-Unix platforms
40 and then only if the executable points to the Python interpreter. Reasonable
41 defaults are used when the above needs are not met.
42
Antoine Pitrouf2590762010-12-21 18:49:01 +000043 .. note::
44
45 On Mac OS X (and perhaps other platforms), executable files may be
46 universal files containing multiple architectures.
47
48 To get at the "64-bitness" of the current interpreter, it is more
49 reliable to query the :attr:`sys.maxsize` attribute::
50
51 is_64bits = sys.maxsize > 2**32
52
Georg Brandl116aa622007-08-15 14:28:22 +000053
54.. function:: machine()
55
56 Returns the machine type, e.g. ``'i386'``. An empty string is returned if the
57 value cannot be determined.
58
59
60.. function:: node()
61
62 Returns the computer's network name (may not be fully qualified!). An empty
63 string is returned if the value cannot be determined.
64
65
66.. function:: platform(aliased=0, terse=0)
67
68 Returns a single string identifying the underlying platform with as much useful
69 information as possible.
70
71 The output is intended to be *human readable* rather than machine parseable. It
72 may look different on different platforms and this is intended.
73
74 If *aliased* is true, the function will use aliases for various platforms that
75 report system names which differ from their common names, for example SunOS will
76 be reported as Solaris. The :func:`system_alias` function is used to implement
77 this.
78
79 Setting *terse* to true causes the function to return only the absolute minimum
80 information needed to identify the platform.
81
Victor Stinnerea0ca212018-12-05 22:41:52 +010082 .. versionchanged:: 3.8
83 On macOS, the function now uses :func:`mac_ver`, if it returns a
84 non-empty release string, to get the macOS version rather than the darwin
85 version.
86
Georg Brandl116aa622007-08-15 14:28:22 +000087
88.. function:: processor()
89
90 Returns the (real) processor name, e.g. ``'amdk6'``.
91
92 An empty string is returned if the value cannot be determined. Note that many
93 platforms do not provide this information or simply return the same value as for
94 :func:`machine`. NetBSD does this.
95
96
97.. function:: python_build()
98
99 Returns a tuple ``(buildno, builddate)`` stating the Python build number and
100 date as strings.
101
102
103.. function:: python_compiler()
104
105 Returns a string identifying the compiler used for compiling Python.
106
107
108.. function:: python_branch()
109
110 Returns a string identifying the Python implementation SCM branch.
111
Georg Brandl116aa622007-08-15 14:28:22 +0000112
113.. function:: python_implementation()
114
115 Returns a string identifying the Python implementation. Possible return values
Ezio Melottib351bcc2011-05-03 20:41:48 +0300116 are: 'CPython', 'IronPython', 'Jython', 'PyPy'.
Georg Brandl116aa622007-08-15 14:28:22 +0000117
Georg Brandl116aa622007-08-15 14:28:22 +0000118
119.. function:: python_revision()
120
121 Returns a string identifying the Python implementation SCM revision.
122
Georg Brandl116aa622007-08-15 14:28:22 +0000123
124.. function:: python_version()
125
Martin Panterd21e0b52015-10-10 10:36:22 +0000126 Returns the Python version as string ``'major.minor.patchlevel'``.
Georg Brandl116aa622007-08-15 14:28:22 +0000127
128 Note that unlike the Python ``sys.version``, the returned value will always
129 include the patchlevel (it defaults to 0).
130
131
132.. function:: python_version_tuple()
133
134 Returns the Python version as tuple ``(major, minor, patchlevel)`` of strings.
135
136 Note that unlike the Python ``sys.version``, the returned value will always
137 include the patchlevel (it defaults to ``'0'``).
138
139
140.. function:: release()
141
142 Returns the system's release, e.g. ``'2.2.0'`` or ``'NT'`` An empty string is
143 returned if the value cannot be determined.
144
145
146.. function:: system()
147
148 Returns the system/OS name, e.g. ``'Linux'``, ``'Windows'``, or ``'Java'``. An
149 empty string is returned if the value cannot be determined.
150
151
152.. function:: system_alias(system, release, version)
153
154 Returns ``(system, release, version)`` aliased to common marketing names used
155 for some systems. It also does some reordering of the information in some cases
156 where it would otherwise cause confusion.
157
158
159.. function:: version()
160
161 Returns the system's release version, e.g. ``'#3 on degas'``. An empty string is
162 returned if the value cannot be determined.
163
164
165.. function:: uname()
166
Larry Hastings68386bc2012-06-24 14:30:41 -0700167 Fairly portable uname interface. Returns a :func:`~collections.namedtuple`
168 containing six attributes: :attr:`system`, :attr:`node`, :attr:`release`,
169 :attr:`version`, :attr:`machine`, and :attr:`processor`.
Georg Brandl116aa622007-08-15 14:28:22 +0000170
Larry Hastings68386bc2012-06-24 14:30:41 -0700171 Note that this adds a sixth attribute (:attr:`processor`) not present
172 in the :func:`os.uname` result. Also, the attribute names are different
173 for the first two attributes; :func:`os.uname` names them
174 :attr:`sysname` and :attr:`nodename`.
Georg Brandl116aa622007-08-15 14:28:22 +0000175
176 Entries which cannot be determined are set to ``''``.
177
Larry Hastings68386bc2012-06-24 14:30:41 -0700178 .. versionchanged:: 3.3
179 Result changed from a tuple to a namedtuple.
180
Georg Brandl116aa622007-08-15 14:28:22 +0000181
182Java Platform
183-------------
184
185
186.. function:: java_ver(release='', vendor='', vminfo=('','',''), osinfo=('','',''))
187
Georg Brandlc6c31782009-06-08 13:41:29 +0000188 Version interface for Jython.
Georg Brandl116aa622007-08-15 14:28:22 +0000189
190 Returns a tuple ``(release, vendor, vminfo, osinfo)`` with *vminfo* being a
191 tuple ``(vm_name, vm_release, vm_vendor)`` and *osinfo* being a tuple
192 ``(os_name, os_version, os_arch)``. Values which cannot be determined are set to
193 the defaults given as parameters (which all default to ``''``).
194
195
196Windows Platform
197----------------
198
199
200.. function:: win32_ver(release='', version='', csd='', ptype='')
201
202 Get additional version information from the Windows Registry and return a tuple
Georg Brandl6647a712013-10-06 19:19:18 +0200203 ``(release, version, csd, ptype)`` referring to OS release, version number,
204 CSD level (service pack) and OS type (multi/single processor).
Georg Brandl116aa622007-08-15 14:28:22 +0000205
206 As a hint: *ptype* is ``'Uniprocessor Free'`` on single processor NT machines
207 and ``'Multiprocessor Free'`` on multi processor machines. The *'Free'* refers
208 to the OS version being free of debugging code. It could also state *'Checked'*
209 which means the OS version uses debugging code, i.e. code that checks arguments,
210 ranges, etc.
211
212 .. note::
213
Antoine Pitrouf2590762010-12-21 18:49:01 +0000214 This function works best with Mark Hammond's
Christian Heimes02781dc2008-03-21 01:11:52 +0000215 :mod:`win32all` package installed, but also on Python 2.3 and
216 later (support for this was added in Python 2.6). It obviously
217 only runs on Win32 compatible platforms.
Georg Brandl116aa622007-08-15 14:28:22 +0000218
219
Georg Brandl116aa622007-08-15 14:28:22 +0000220Mac OS Platform
221---------------
222
223
224.. function:: mac_ver(release='', versioninfo=('','',''), machine='')
225
226 Get Mac OS version information and return it as tuple ``(release, versioninfo,
227 machine)`` with *versioninfo* being a tuple ``(version, dev_stage,
228 non_release_version)``.
229
230 Entries which cannot be determined are set to ``''``. All tuple entries are
231 strings.
232
Georg Brandl116aa622007-08-15 14:28:22 +0000233
234Unix Platforms
235--------------
236
Serhiy Storchaka2a9b8ba2018-07-09 11:47:45 +0300237.. function:: libc_ver(executable=sys.executable, lib='', version='', chunksize=16384)
Georg Brandl116aa622007-08-15 14:28:22 +0000238
239 Tries to determine the libc version against which the file executable (defaults
240 to the Python interpreter) is linked. Returns a tuple of strings ``(lib,
241 version)`` which default to the given parameters in case the lookup fails.
242
243 Note that this function has intimate knowledge of how different libc versions
Christian Heimesc3f30c42008-02-22 16:37:40 +0000244 add symbols to the executable is probably only usable for executables compiled
Georg Brandl116aa622007-08-15 14:28:22 +0000245 using :program:`gcc`.
246
247 The file is read and scanned in chunks of *chunksize* bytes.
248