A remarkably powerful dynamic programming language

Python for Mac

Python 3.8.0

  -  27.7 MB  -  Open Source

Sometimes latest versions of the software can cause issues when installed on older devices or devices running an older version of the operating system.

Software makers usually fix these issues but it can take them some time. What you can do in the meantime is to download and install an older version of Python 3.8.0.


For those interested in downloading the most recent release of Python for Mac or reading our review, simply click here.


All old versions distributed on our website are completely virus-free and available for download at no cost.


We would love to hear from you

If you have any questions or ideas that you want to share with us - head over to our Contact page and let us know. We value your feedback!

  • Python 3.8.0 Screenshots

    The images below have been resized. Click on them to view the screenshots in full size.

    Python 3.8.0 Screenshot 1
  • Python 3.8.0 Screenshot 2
  • Python 3.8.0 Screenshot 3
  • Python 3.8.0 Screenshot 4
  • Python 3.8.0 Screenshot 5

What's new in this version:

Core and Builtins:
- Fixed a bug where the scope of named expressions was not being resolved correctly in the presence of the global keyword. Patch by Pablo Galindo
- When cyclic garbage collection (gc) runs finalizers that resurrect unreachable objects, the current gc run ends, without collecting any cyclic trash. However, the statistics reported by collect() and get_stats() claimed that all cyclic trash found was collected, and that the resurrected objects were collected. Changed the stats to report that none were collected

Library:
- Revert GH-15522, which introduces a regression in mimetypes.guess_type() due to improper handling of filenames as urls
- Fix __repr__ method for dataclasses.InitVar to support typing objects, patch by Samuel Colvin
- Add missing stat.S_IFDOOR, stat.S_IFPORT, stat.S_IFWHT, stat.S_ISDOOR(), stat.S_ISPORT(), and stat.S_ISWHT() values to the Python implementation of stat
- Nested subclasses of typing.NamedTuple are now pickleable
- Prevent KeyError thrown by _encoded_words.decode() when given an encoded-word with invalid content-type encoding from propagating all the way to email.message.get()
- Add smtplib.SMTPNotSupportedError to the smtplib exported names
- OS native encoding is now used for converting between Python strings and Tcl objects. This allows to display, copy and paste to clipboard emoji and other non-BMP characters. Converting strings from Tcl to Python and back now never fails (except MemoryError)

Documentation:
- Add list of no-longer-escaped chars to re.escape documentation

Tests:
- On timeout, regrtest no longer attempts to call popen.communicate() again: it can hang until all child processes using stdout and stderr pipes completes. Kill the worker process and ignores its output. Change also the faulthandler timeout of the main process from 1 minute to 5 minutes, for Python slowest buildbots

IDLE:
- IDLE no longer fails when write non-encodable characters to stderr. It now escapes them with a backslash, as the regular Python interpreter. Added the errors field to the standard streams

Tools/Demos:
- Update Valgrind suppression file to ignore a false alarm in PyUnicode_Decode() when using GCC builtin strcmp()
Pathfix.py: Assume all files that end on ‘.py’ are Python scripts when working recursively

C API:
- Fix a crash in weakref.proxy objects due to incorrect lifetime management when calling some associated methods that may delete the last reference to object being referenced by the proxy. Patch by Pablo Galindo