A remarkably powerful dynamic programming language

Python (32-bit)

Python 3.10.2 (32-bit)

  -  25.8 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.10.2 (32-bit).


For those interested in downloading the most recent release of Python (32-bit) 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.10.2 (32-bit) Screenshots

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

    Python 3.10.2 (32-bit) Screenshot 1
  • Python 3.10.2 (32-bit) Screenshot 2
  • Python 3.10.2 (32-bit) Screenshot 3
  • Python 3.10.2 (32-bit) Screenshot 4
  • Python 3.10.2 (32-bit) Screenshot 5

What's new in this version:

Core and Builtins:
- bpo-46347: Fix memory leak in PyEval_EvalCodeEx.
- bpo-46289: ASDL declaration of FormattedValue has changed to reflect conversion field is not optional.
- bpo-46237: Fix the line number of tokenizer errors inside f-strings. Patch by Pablo Galindo.
- bpo-46006: Fix a regression when a type method like __init__() is modified in a subinterpreter. Fix a regression in _PyUnicode_EqualToASCIIId() and type update_slot(). Revert the change which made the Unicode dictionary of interned strings compatible with subinterpreters: the internal interned dictionary is shared again by all interpreters. Patch by Victor Stinner.
- bpo-46085: Fix iterator cache mechanism of OrderedDict.
- bpo-46110: Add a maximum recursion check to the PEG parser to avoid stack overflow. Patch by Pablo Galindo
- bpo-46054: Fix parser error when parsing non-utf8 characters in source files. Patch by Pablo Galindo.
- bpo-46042: Improve the location of the caret in SyntaxError exceptions emitted by the symbol table. Patch by Pablo Galindo.
- bpo-46025: Fix a crash in the atexit module involving functions that unregister themselves before raising exceptions. Patch by Pablo Galindo.
- bpo-46009: Restore behavior from 3.9 and earlier when sending non-None to newly started generator. In 3.9 this did not affect the state of the generator. In 3.10.0 and 3.10.1 gen_func().send(0) is equivalent to gen_func().throw(TypeError(...) which exhausts the generator. In 3.10.2 onward, the behavior has been reverted to that of 3.9.
- bpo-46000: Improve compatibility of the curses module with NetBSD curses.
- bpo-46004: Fix the SyntaxError location for errors involving for loops with invalid targets. Patch by Pablo Galindo
- bpo-42918: Fix bug where the built-in compile() function did not always raise a SyntaxError when passed multiple statements in ‘single’ mode. Patch by Weipeng Hong.

Library:
- bpo-40479: Fix hashlib usedforsecurity option to work correctly with OpenSSL 3.0.0 in FIPS mode.
- bpo-46070: Fix possible segfault when importing the asyncio module from different sub-interpreters in parallel. Patch by Erlend E. Aasland.
- bpo-46278: Reflect context argument in AbstractEventLoop.call_*() methods. Loop implementations already support it.
- bpo-46239: Improve error message when importing asyncio.windows_events on non-Windows.
- bpo-20369: concurrent.futures.wait() no longer blocks forever when given duplicate Futures. Patch by Kumar Aditya.
- bpo-46105: Honor spec when generating requirement specs with urls and extras (importlib_metadata 4.8.3)
- bpo-26952: argparse raises ValueError with clear message when trying to render usage for an empty mutually-exclusive group. Previously it raised a cryptic IndexError.
- bpo-27718: Fix help for the signal module. Some functions (e.g. signal() and getsignal()) were omitted.
- bpo-46032: The registry() method of functools.singledispatch() functions checks now the first argument or the first parameter annotation and raises a TypeError if it is not supported. Previously unsupported “types” were ignored (e.g. typing.List[int]) or caused an error at calling time (e.g. list[int]).
- bpo-46018: Ensure that math.expm1() does not raise on underflow.
- bpo-45755: typing generic aliases now reveal the class attributes of the original generic class when passed to dir(). This was the behavior up to Python 3.6, but was changed in 3.7-3.9.
- bpo-13236: unittest.TextTestResult and unittest.TextTestRunner flush now the output stream more often.
- bpo-42378: Fixes the issue with log file being overwritten when logging.FileHandler is used in atexit with filemode set to 'w'. Note this will cause the message in atexit not being logged if the log stream is already closed due to shutdown of logging.

Documentation:
- bpo-46120: State that | is preferred for readability over Union in the typing docs
- bpo-46040: Fix removal Python version for @asyncio.coroutine, the correct value is 3.11
- bpo-19737: Update the documentation for the globals() function
- bpo-45840: Improve cross-references in the documentation for the data model

Tests:
- bpo-46205: Fix hang in runtest_mp due to race condition
- bpo-46263: Fix test_capi on FreeBSD 14-dev: instruct jemalloc to not fill freed memory with junk byte
- bpo-46150: Now fakename in test_pathlib.PosixPathTest.test_expanduser is checked to be non-existent
- bpo-46129: Rewrite asyncio.locks tests with unittest.IsolatedAsyncioTestCase usage
- bpo-46114: Fix test case for OpenSSL 3.0.1 version. OpenSSL 3.0 uses 0xMNN00PP0L

Build:
- bpo-46263: configure no longer sets MULTIARCH on FreeBSD platforms.
- bpo-46106: Updated OpenSSL to 1.1.1m in Windows builds, macOS installer builds, and CI. Patch by Kumar Aditya.

C API:
- bpo-46236: Fix a bug in PyFunction_GetAnnotations() that caused it to return a tuple instead of a dict