A remarkably powerful dynamic programming language

Python (32-bit)

Join our mailing list

Stay up to date with latest software releases, news, software discounts, deals and more.

Subscribe

Python 2.7.14

  -  18.3 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 2.7.14.


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 2.7.14 Screenshots

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

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

What's new in this version:

Core and Builtins:
- Fixed possible integer overflow in PyString_DecodeEscape.
- Fixed various segfaults with dict when input collections are mutated during searching, inserting or comparing.
- Fixed type.__setattr__() and type.__delattr__() for non-interned or unicode attribute names.
- Fixed error messages in the index() method of tuple and list when pass indices of wrong type.
- Support __rmod__ for subclasses of str being called before str.__mod__.
- Fix incorrect handling of signed zeros in complex constructor for complex subclasses and for inputs having a __complex__ method.
- Fixed possibly dereferencing undefined pointers when creating weakref objects.
- Allow sys.exit to accept longs as well as ints.
- Fixed possible use-after-free bugs in the subscription of the buffer object with custom index object.
- Fix overflow checks in string, bytearray and unicode.
- Do not include <sys/random.h> if it does not exist.

Extension Modules:
- Issue #29169: Update zlib to 1.2.11.

Library:
- Prohibited the '=' character in environment variable names in ``os.putenv()`` and ``os.spawn*()``.
- Prevent environment variables injection in subprocess on Windows. Prevent passing other environment variables and command arguments.
- Upgrade expat copy from 2.2.0 to 2.2.1 to get fixes of multiple security vulnerabilities.
- Fix urllib.splithost() to correctly parse fragments. For example, ``splithost('//127.0.0.1#@evil.com/')`` now correctly returns the ``127.0.0.1`` host, instead of treating ``@evil.com`` as the host in an authentification (``login@host``).
- Update expat copy from 2.1.1 to 2.2.0 to get fixes of CVE-2016-0718 and CVE-2016-4472.
- The traceback no longer displayed for SystemExit raised in a callback registered by atexit.
- On Windows, subprocess.Popen.communicate() now also ignore EINVAL on stdin.write() if the child process is still running but closed the pipe.
- Fix the problem that logging.handlers.SysLogHandler cannot handle IPv6 addresses.
- Preserve generator state when _random.Random.setstate() raises an exception.
- tkFont now supports unicode options (e.g. font family).
- multiprocessing.Queue._feed background running  do not break from main loop on exception.
- Fix handling escape characters in HZ codec.
- Warnings emitted when compile a regular expression now always point to the line in the user code.  Previously they could point into inners of the re module if emitted from inside of groups or conditionals.
- Running Python with the -3 option now warns about regular expression syntax that is invalid or has different semantic in Python 3 or will change the behavior in future Python versions.
- Running Python with the -3 option now emits deprecation warnings for getchildren() and getiterator() methods of the Element class in the xml.etree.cElementTree module and when pass the html argument to xml.etree.ElementTree.XMLParser().
- Fixed a deprecation warning about the doctype() method of the xml.etree.ElementTree.XMLParser class.  Now it is emitted only when define the doctype() method in the subclass of XMLParser.
- imaplib now catchs the Windows socket WSAEINVAL error (code 10022) on shutdown(SHUT_RDWR): An invalid operation was attempted. This error occurs sometimes on SSL connections.
- Fix sysconfig.is_python_build() if Python is built with Visual Studio 2008 (VS 9.0).
- Fix range checking in GB18030 decoder.
- Removed the __init__ methods of _json's scanner and encoder. Misusing them could cause memory leaks or crashes.  Now scanner and encoder objects are completely initialized in the __new__ methods.
- Fixed leaks and crashes in errors handling in the parser module.
- Fixed crashes in IOBase methods next() and readlines() when readline() or next() respectively return non-sizeable object. Fixed possible other errors caused by not checking results of PyObject_Size(), PySequence_Size(), or PyMapping_Size().
- Fixed race condition in HTMLParser.unescape().
- _io._IOBase.readlines will check if it's closed first when hint is present.
- Fixed multiple crashes in ElementTree caused by race conditions and wrong types.
- Fix a crash in itertools.chain.from_iterable when encountering long runs of empty iterables.
- Release references to tasks, their arguments and their results as soon as they are finished in multiprocessing.Pool.
- Fixed integer overflow in cPickle when pickle large strings or too many objects.
- Fix file object leak in aifc.open() when file is given as a filesystem path and is not in valid AIFF format.
- Fixed inspect.getargs() for parameters which are cell variables.
- Fix subprocess.Popen.wait() when the child process has exited to a stopped instead of terminated state (ex: when under ptrace).
- Fixed infinite recursion in the repr of uninitialized ctypes.CDLL instances.
- Fixed loading libraries in ctypes by unicode names on Windows.
- Support glibc 2.24 on Linux: don't use getentropy() function but read from /dev/urandom to get random bytes, for example in os.urandom(). On Linux, getentropy() is implemented which getrandom() is blocking mode, whereas os.urandom() should not block.
- In urllib, suffixes in no_proxy environment variable with leading dots could match related hostnames again (e.g. .b.c matches a.b.c).
- Fixed recursion errors in large or resized curses.textpad.Textbox.
- curses.ascii predicates now work correctly with negative integers.
- old keys should not remove new values from WeakValueDictionary when collecting from another thread.
- More APIs now support longs as well as ints.
- Remove editor artifacts from Tix.py, including encoding not recognized by codecs.lookup.
- Fix dict.fromkeys(x) overallocates when x is sparce dict.
- Fix bugs in WeakValueDictionary.setdefault() and WeakValueDictionary.pop() when a GC collection happens in another thread.
- cPickle now correctly propagates errors when unpickle instances of old-style classes.

Documentation:
- Add missing attribute related constants in curses documentation.
- Link the documentation to its source file on GitHub.
- Add canonical header link on each page to corresponding major version of the documentation.
- Rewrite Comparisons section in the Expressions chapter of the language reference. Some of the details of comparing mixed types were incorrect or ambiguous. Added default behaviour and consistency suggestions for user-defined classes.

Build:
- Prevent unnecessary rebuilding of Python during ``make test``, ``make install`` and some other make targets when configured with ``--enable-optimizations``.
- Don't regenerate generated files based on file modification time anymore: the action is now explicit. Replace ``make touch`` with ``make regen-all``.
- sys.version and the platform module python_build(), python_branch(), and python_revision() functions now use git information rather than hg when building from a repo.
- Fix ``--enable-optimization`` configure option didn't work.
- Update Windows build and OS X installers to use OpenSSL 1.0.2k.
- Fix implicit declaration of function _setmode.

Tests:
- Fix sporadic failures in test_multiprocessing.WithProcessesTestCondition.
- Backported test.regrtest options -m/--match and -G/--failfast from Python 3.
- To unify running tests in Python 2.7 and Python 3, the test package can be run as a script.  This is equivalent to running the test.regrtest module as a script.
- To simplify backports from Python 3, the test.test_support module was converted into a package and renamed to test.support.  The test.script_helper module was moved into the test.support package. Names test.test_support and test.script_helper are left as aliases to support and test.support.script_helper.
- Enhanced function swap_attr() in the test.test_support module. It now works when delete replaced attribute inside the with statement.  The old value of the attribute (or None if it doesn't exist) now will be assigned to the target of the "as" clause, if there is one. Also backported function swap_item().
- Skip test_asyncore and test_eintr poll failures on macOS. Skip some tests of select.poll when running on macOS due to unresolved issues with the underlying system poll function on some macOS versions.
- Convert ElementTree doctests to unittests.

Join our mailing list

Stay up to date with latest software releases, news, software discounts, deals and more.

Subscribe