• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1:mod:`platform` ---  Access to underlying platform's identifying data
2=====================================================================
3
4.. module:: platform
5   :synopsis: Retrieves as much platform identifying data as possible.
6.. moduleauthor:: Marc-Andre Lemburg <mal@egenix.com>
7.. sectionauthor:: Bjorn Pettersen <bpettersen@corp.fairisaac.com>
8
9
10.. versionadded:: 2.3
11
12**Source code:** :source:`Lib/platform.py`
13
14--------------
15
16.. note::
17
18   Specific platforms listed alphabetically, with Linux included in the Unix
19   section.
20
21
22Cross Platform
23--------------
24
25
26.. function:: architecture(executable=sys.executable, bits='', linkage='')
27
28   Queries the given executable (defaults to the Python interpreter binary) for
29   various architecture information.
30
31   Returns a tuple ``(bits, linkage)`` which contain information about the bit
32   architecture and the linkage format used for the executable. Both values are
33   returned as strings.
34
35   Values that cannot be determined are returned as given by the parameter presets.
36   If bits is given as ``''``, the ``sizeof(pointer)`` (or
37   ``sizeof(long)`` on Python version < 1.5.2) is used as indicator for the
38   supported pointer size.
39
40   The function relies on the system's :file:`file` command to do the actual work.
41   This is available on most if not all Unix  platforms and some non-Unix platforms
42   and then only if the executable points to the Python interpreter.  Reasonable
43   defaults are used when the above needs are not met.
44
45   .. note::
46
47      On Mac OS X (and perhaps other platforms), executable files may be
48      universal files containing multiple architectures.
49
50      To get at the "64-bitness" of the current interpreter, it is more
51      reliable to query the :attr:`sys.maxsize` attribute::
52
53         is_64bits = sys.maxsize > 2**32
54
55
56.. function:: machine()
57
58   Returns the machine type, e.g. ``'i386'``. An empty string is returned if the
59   value cannot be determined.
60
61
62.. function:: node()
63
64   Returns the computer's network name (may not be fully qualified!). An empty
65   string is returned if the value cannot be determined.
66
67
68.. function:: platform(aliased=0, terse=0)
69
70   Returns a single string identifying the underlying platform with as much useful
71   information as possible.
72
73   The output is intended to be *human readable* rather than machine parseable. It
74   may look different on different platforms and this is intended.
75
76   If *aliased* is true, the function will use aliases for various platforms that
77   report system names which differ from their common names, for example SunOS will
78   be reported as Solaris.  The :func:`system_alias` function is used to implement
79   this.
80
81   Setting *terse* to true causes the function to return only the absolute minimum
82   information needed to identify the platform.
83
84
85.. function:: processor()
86
87   Returns the (real) processor name, e.g. ``'amdk6'``.
88
89   An empty string is returned if the value cannot be determined. Note that many
90   platforms do not provide this information or simply return the same value as for
91   :func:`machine`.  NetBSD does this.
92
93
94.. function:: python_build()
95
96   Returns a tuple ``(buildno, builddate)`` stating the Python build number and
97   date as strings.
98
99
100.. function:: python_compiler()
101
102   Returns a string identifying the compiler used for compiling Python.
103
104
105.. function:: python_branch()
106
107   Returns a string identifying the Python implementation SCM branch.
108
109   .. versionadded:: 2.6
110
111
112.. function:: python_implementation()
113
114   Returns a string identifying the Python implementation. Possible return values
115   are: 'CPython', 'IronPython', 'Jython', 'PyPy'.
116
117   .. versionadded:: 2.6
118
119
120.. function:: python_revision()
121
122   Returns a string identifying the Python implementation SCM revision.
123
124   .. versionadded:: 2.6
125
126
127.. function:: python_version()
128
129   Returns the Python version as string ``'major.minor.patchlevel'``.
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:: python_version_tuple()
136
137   Returns the Python version as tuple ``(major, minor, patchlevel)`` of strings.
138
139   Note that unlike the Python ``sys.version``, the returned value will always
140   include the patchlevel (it defaults to ``'0'``).
141
142
143.. function:: release()
144
145   Returns the system's release, e.g. ``'2.2.0'`` or ``'NT'`` An empty string is
146   returned if the value cannot be determined.
147
148
149.. function:: system()
150
151   Returns the system/OS name, e.g. ``'Linux'``, ``'Windows'``, or ``'Java'``. An
152   empty string is returned if the value cannot be determined.
153
154
155.. function:: system_alias(system, release, version)
156
157   Returns ``(system, release, version)`` aliased to common marketing names used
158   for some systems.  It also does some reordering of the information in some cases
159   where it would otherwise cause confusion.
160
161
162.. function:: version()
163
164   Returns the system's release version, e.g. ``'#3 on degas'``. An empty string is
165   returned if the value cannot be determined.
166
167
168.. function:: uname()
169
170   Fairly portable uname interface. Returns a tuple of strings ``(system, node,
171   release, version, machine, processor)`` identifying the underlying platform.
172
173   Note that unlike the :func:`os.uname` function this also returns possible
174   processor information as additional tuple entry.
175
176   Entries which cannot be determined are set to ``''``.
177
178
179Java Platform
180-------------
181
182
183.. function:: java_ver(release='', vendor='', vminfo=('','',''), osinfo=('','',''))
184
185   Version interface for Jython.
186
187   Returns a tuple ``(release, vendor, vminfo, osinfo)`` with *vminfo* being a
188   tuple ``(vm_name, vm_release, vm_vendor)`` and *osinfo* being a tuple
189   ``(os_name, os_version, os_arch)``. Values which cannot be determined are set to
190   the defaults given as parameters (which all default to ``''``).
191
192
193Windows Platform
194----------------
195
196
197.. function:: win32_ver(release='', version='', csd='', ptype='')
198
199   Get additional version information from the Windows Registry and return a tuple
200   ``(release, version, csd, ptype)`` referring to OS release, version number,
201   CSD level (service pack) and OS type (multi/single processor).
202
203   As a hint: *ptype* is ``'Uniprocessor Free'`` on single processor NT machines
204   and ``'Multiprocessor Free'`` on multi processor machines. The *'Free'* refers
205   to the OS version being free of debugging code. It could also state *'Checked'*
206   which means the OS version uses debugging code, i.e. code that checks arguments,
207   ranges, etc.
208
209   .. note::
210
211      This function works best with Mark Hammond's
212      :mod:`win32all` package installed, but also on Python 2.3 and
213      later (support for this was added in Python 2.6). It obviously
214      only runs on Win32 compatible platforms.
215
216
217Win95/98 specific
218^^^^^^^^^^^^^^^^^
219
220.. function:: popen(cmd, mode='r', bufsize=None)
221
222   Portable :func:`popen` interface.  Find a working popen implementation
223   preferring :func:`win32pipe.popen`.  On Windows NT, :func:`win32pipe.popen`
224   should work; on Windows 9x it hangs due to bugs in the MS C library.
225
226
227Mac OS Platform
228---------------
229
230
231.. function:: mac_ver(release='', versioninfo=('','',''), machine='')
232
233   Get Mac OS version information and return it as tuple ``(release, versioninfo,
234   machine)`` with *versioninfo* being a tuple ``(version, dev_stage,
235   non_release_version)``.
236
237   Entries which cannot be determined are set to ``''``.  All tuple entries are
238   strings.
239
240
241Unix Platforms
242--------------
243
244
245.. function:: dist(distname='', version='', id='', supported_dists=('SuSE','debian','redhat','mandrake',...))
246
247   This is an old version of the functionality now provided by
248   :func:`linux_distribution`. For new code, please use the
249   :func:`linux_distribution`.
250
251   The only difference between the two is that ``dist()`` always
252   returns the short name of the distribution taken from the
253   ``supported_dists`` parameter.
254
255   .. deprecated:: 2.6
256
257.. function:: linux_distribution(distname='', version='', id='', supported_dists=('SuSE','debian','redhat','mandrake',...), full_distribution_name=1)
258
259   Tries to determine the name of the Linux OS distribution name.
260
261   ``supported_dists`` may be given to define the set of Linux distributions to
262   look for. It defaults to a list of currently supported Linux distributions
263   identified by their release file name.
264
265   If ``full_distribution_name`` is true (default), the full distribution read
266   from the OS is returned. Otherwise the short name taken from
267   ``supported_dists`` is used.
268
269   Returns a tuple ``(distname,version,id)`` which defaults to the args given as
270   parameters.  ``id`` is the item in parentheses after the version number.  It
271   is usually the version codename.
272
273   .. note::
274      This function is deprecated since Python 3.5 and removed in Python 3.8.
275      See alternative like the `distro <https://pypi.org/project/distro>`_ package.
276
277   .. versionadded:: 2.6
278
279.. function:: libc_ver(executable=sys.executable, lib='', version='', chunksize=2048)
280
281   Tries to determine the libc version against which the file executable (defaults
282   to the Python interpreter) is linked.  Returns a tuple of strings ``(lib,
283   version)`` which default to the given parameters in case the lookup fails.
284
285   Note that this function has intimate knowledge of how different libc versions
286   add symbols to the executable is probably only usable for executables compiled
287   using :program:`gcc`.
288
289   The file is read and scanned in chunks of *chunksize* bytes.
290
291