blob: 7ac4b027418e6be3e3250993cf2cd65ec8874941 [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
82
83.. function:: processor()
84
85 Returns the (real) processor name, e.g. ``'amdk6'``.
86
87 An empty string is returned if the value cannot be determined. Note that many
88 platforms do not provide this information or simply return the same value as for
89 :func:`machine`. NetBSD does this.
90
91
92.. function:: python_build()
93
94 Returns a tuple ``(buildno, builddate)`` stating the Python build number and
95 date as strings.
96
97
98.. function:: python_compiler()
99
100 Returns a string identifying the compiler used for compiling Python.
101
102
103.. function:: python_branch()
104
105 Returns a string identifying the Python implementation SCM branch.
106
Georg Brandl116aa622007-08-15 14:28:22 +0000107
108.. function:: python_implementation()
109
110 Returns a string identifying the Python implementation. Possible return values
Ezio Melottib351bcc2011-05-03 20:41:48 +0300111 are: 'CPython', 'IronPython', 'Jython', 'PyPy'.
Georg Brandl116aa622007-08-15 14:28:22 +0000112
Georg Brandl116aa622007-08-15 14:28:22 +0000113
114.. function:: python_revision()
115
116 Returns a string identifying the Python implementation SCM revision.
117
Georg Brandl116aa622007-08-15 14:28:22 +0000118
119.. function:: python_version()
120
Martin Panterd21e0b52015-10-10 10:36:22 +0000121 Returns the Python version as string ``'major.minor.patchlevel'``.
Georg Brandl116aa622007-08-15 14:28:22 +0000122
123 Note that unlike the Python ``sys.version``, the returned value will always
124 include the patchlevel (it defaults to 0).
125
126
127.. function:: python_version_tuple()
128
129 Returns the Python version as tuple ``(major, minor, patchlevel)`` of strings.
130
131 Note that unlike the Python ``sys.version``, the returned value will always
132 include the patchlevel (it defaults to ``'0'``).
133
134
135.. function:: release()
136
137 Returns the system's release, e.g. ``'2.2.0'`` or ``'NT'`` An empty string is
138 returned if the value cannot be determined.
139
140
141.. function:: system()
142
143 Returns the system/OS name, e.g. ``'Linux'``, ``'Windows'``, or ``'Java'``. An
144 empty string is returned if the value cannot be determined.
145
146
147.. function:: system_alias(system, release, version)
148
149 Returns ``(system, release, version)`` aliased to common marketing names used
150 for some systems. It also does some reordering of the information in some cases
151 where it would otherwise cause confusion.
152
153
154.. function:: version()
155
156 Returns the system's release version, e.g. ``'#3 on degas'``. An empty string is
157 returned if the value cannot be determined.
158
159
160.. function:: uname()
161
Larry Hastings68386bc2012-06-24 14:30:41 -0700162 Fairly portable uname interface. Returns a :func:`~collections.namedtuple`
163 containing six attributes: :attr:`system`, :attr:`node`, :attr:`release`,
164 :attr:`version`, :attr:`machine`, and :attr:`processor`.
Georg Brandl116aa622007-08-15 14:28:22 +0000165
Larry Hastings68386bc2012-06-24 14:30:41 -0700166 Note that this adds a sixth attribute (:attr:`processor`) not present
167 in the :func:`os.uname` result. Also, the attribute names are different
168 for the first two attributes; :func:`os.uname` names them
169 :attr:`sysname` and :attr:`nodename`.
Georg Brandl116aa622007-08-15 14:28:22 +0000170
171 Entries which cannot be determined are set to ``''``.
172
Larry Hastings68386bc2012-06-24 14:30:41 -0700173 .. versionchanged:: 3.3
174 Result changed from a tuple to a namedtuple.
175
Georg Brandl116aa622007-08-15 14:28:22 +0000176
177Java Platform
178-------------
179
180
181.. function:: java_ver(release='', vendor='', vminfo=('','',''), osinfo=('','',''))
182
Georg Brandlc6c31782009-06-08 13:41:29 +0000183 Version interface for Jython.
Georg Brandl116aa622007-08-15 14:28:22 +0000184
185 Returns a tuple ``(release, vendor, vminfo, osinfo)`` with *vminfo* being a
186 tuple ``(vm_name, vm_release, vm_vendor)`` and *osinfo* being a tuple
187 ``(os_name, os_version, os_arch)``. Values which cannot be determined are set to
188 the defaults given as parameters (which all default to ``''``).
189
190
191Windows Platform
192----------------
193
194
195.. function:: win32_ver(release='', version='', csd='', ptype='')
196
197 Get additional version information from the Windows Registry and return a tuple
Georg Brandl6647a712013-10-06 19:19:18 +0200198 ``(release, version, csd, ptype)`` referring to OS release, version number,
199 CSD level (service pack) and OS type (multi/single processor).
Georg Brandl116aa622007-08-15 14:28:22 +0000200
201 As a hint: *ptype* is ``'Uniprocessor Free'`` on single processor NT machines
202 and ``'Multiprocessor Free'`` on multi processor machines. The *'Free'* refers
203 to the OS version being free of debugging code. It could also state *'Checked'*
204 which means the OS version uses debugging code, i.e. code that checks arguments,
205 ranges, etc.
206
207 .. note::
208
Antoine Pitrouf2590762010-12-21 18:49:01 +0000209 This function works best with Mark Hammond's
Christian Heimes02781dc2008-03-21 01:11:52 +0000210 :mod:`win32all` package installed, but also on Python 2.3 and
211 later (support for this was added in Python 2.6). It obviously
212 only runs on Win32 compatible platforms.
Georg Brandl116aa622007-08-15 14:28:22 +0000213
214
Georg Brandl116aa622007-08-15 14:28:22 +0000215Mac OS Platform
216---------------
217
218
219.. function:: mac_ver(release='', versioninfo=('','',''), machine='')
220
221 Get Mac OS version information and return it as tuple ``(release, versioninfo,
222 machine)`` with *versioninfo* being a tuple ``(version, dev_stage,
223 non_release_version)``.
224
225 Entries which cannot be determined are set to ``''``. All tuple entries are
226 strings.
227
Georg Brandl116aa622007-08-15 14:28:22 +0000228
229Unix Platforms
230--------------
231
Serhiy Storchaka2a9b8ba2018-07-09 11:47:45 +0300232.. function:: libc_ver(executable=sys.executable, lib='', version='', chunksize=16384)
Georg Brandl116aa622007-08-15 14:28:22 +0000233
234 Tries to determine the libc version against which the file executable (defaults
235 to the Python interpreter) is linked. Returns a tuple of strings ``(lib,
236 version)`` which default to the given parameters in case the lookup fails.
237
238 Note that this function has intimate knowledge of how different libc versions
Christian Heimesc3f30c42008-02-22 16:37:40 +0000239 add symbols to the executable is probably only usable for executables compiled
Georg Brandl116aa622007-08-15 14:28:22 +0000240 using :program:`gcc`.
241
242 The file is read and scanned in chunks of *chunksize* bytes.
243