A remarkably powerful dynamic programming language

Python (64-bit)

Join our mailing list

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

Subscribe
Download Python 3.12.2 (64-bit)

Python (64-bit)

  -  25.4 MB  -  Open Source
  • Latest Version

    Python 3.12.2 (64-bit) LATEST

  • Review by

    Daniel Leblanc

  • Operating System

    Windows Vista64 / Windows 7 64 / Windows 8 64 / Windows 10 64 / Windows 11

  • User Rating

    Click to vote
  • Author / Product

    Python Software Foundation / External Link

  • Filename

    python-3.12.2.amd64.exe

Python is a dynamic object-oriented programming language that can be used for many kinds of software development. It offers strong support for integration with other languages and tools, comes with extensive standard libraries, and can be learned in a few days.



Note that Python 3.9+ cannot be used on Windows 7 or earlier.

Python is a high-level, interpreted programming language that emphasizes code readability and simplicity. Guido van Rossum initially developed it in the late 1980s, and since then, it has evolved into a robust language with a vast ecosystem of libraries and frameworks. Python's versatility allows it to be used for a wide range of applications, including web development, data analysis, scientific computing, artificial intelligence, machine learning, and automation.

Many Python programmers report substantial productivity gains and feel the language encourages the development of higher quality, more maintainable code. The app runs on Windows, Linux/Unix, macOS, OS/2, Amiga, Palm Handhelds, and Nokia mobile phones. The app has also been ported to the Java and .NET virtual machines. Python 64-bit is distributed under an OSI-approved open-source license that makes it free to use, even for commercial products.

Some of its key distinguishing features include:
  • Very clear, readable syntax
  • Strong introspection capabilities
  • Intuitive object orientation
  • Natural expression of procedural code
  • Full modularity, supporting hierarchical packages
  • Exception-based error handling
  • Very high-level dynamic data types
  • Extensive standard libraries and third-party modules for virtually every task
  • Extensions and modules easily are written in C, C++ (or Java for Jython, or .NET languages for IronPython)
  • Embeddable within applications as a scripting interface
Python's standard library supports many Internet protocols:
  • HTML and XML
  • JSON
  • E-mail processing.
  • Support for FTP, IMAP, and other Internet protocols.
  • Easy-to-use socket interface.
And the Package Index has yet more libraries:
  • Requests, a powerful HTTP client library.
  • BeautifulSoup, is an HTML parser that can handle all sorts of oddball HTML.
  • Feedparser for parsing RSS/Atom feeds.
  • Paramiko, implementing the SSH2 protocol.
  • Twisted Python, a framework for asynchronous network programming.
Features

Easy-to-learn Syntax: Python's syntax is clean and intuitive, making it an excellent choice for beginners. Its indentation-based structure enforces code readability and reduces the chances of syntactical errors.

Extensive Libraries: It boasts a rich collection of libraries, such as NumPy for scientific computing, Pandas for data manipulation, Matplotlib for data visualization, TensorFlow and PyTorch for machine learning, Django and Flask for web development, and many more. These libraries significantly accelerate development and reduce the need for reinventing the wheel.

Cross-Platform Compatibility: The app is available on major operating systems, including Windows, macOS, and Linux, ensuring that developers can seamlessly switch between different environments.

Dynamically Typed: The app is a dynamically typed language, which means variables do not need explicit declarations. This feature allows for faster development and easy prototyping.

Integration Capabilities: It easily integrates with other programming languages like C, C++, and Java, enabling developers to leverage existing codebases and libraries.

User Interface

It is primarily a command-line-based language, meaning it lacks a dedicated graphical user interface (GUI). However, several Integrated Development Environments (IDEs) and code editors provide a visual interface to enhance the development experience. Popular choices include PyCharm, Visual Studio Code, Atom, and Jupyter Notebook. These tools offer features like code autocompletion, syntax highlighting, debugging capabilities, and easy project management.

Installation and Setup

Installing Python is a straightforward process. The official website provides installers for various operating systems. Users can download the installer, run it, and follow the step-by-step instructions to complete the installation. It also offers a package manager called pip, which allows users to install additional libraries and frameworks effortlessly.

FAQ

What makes Python stand out as a programming language?
Python's simplicity, readability, and extensive library support make it stand out. It has a gentle learning curve and allows developers to accomplish more with fewer lines of code.

Can I build web applications using Python?
Absolutely! It offers powerful web frameworks like Django and Flask, which simplify web development tasks and provide robust tools for creating scalable applications.

Is Python suitable for scientific computing and data analysis?
Yes, the app is widely used in the scientific community. Libraries like NumPy, Pandas, and Matplotlib provide comprehensive support for numerical computing, data manipulation, and visualization.

Are there resources available for learning Python?
Yes, it has an extensive community with a wealth of learning resources. Online tutorials, documentation, interactive courses, and books cater to learners of all levels.

Can I contribute to the Python community?
Absolutely! Python is an open-source language, and contributions are welcomed. You can contribute to the development of the core language, and libraries, or participate in open-source projects.

What is Python?
A programming language finds application in various domains. It serves as an introductory programming language in several high schools and colleges due to its simplicity. However, it also holds significance among professional software developers at renowned establishments like Google, NASA, and Lucasfilm Ltd.

Can I uninstall Python?
The answer to this question depends on the origin of your Python installation.

If someone deliberately installed Python on your machine, you can safely remove it without causing any harm. On Windows, you can use the Add/Remove Programs icon in the Control Panel for this purpose.

If Python was installed as part of a third-party application, you can remove it; however, be aware that the associated application will no longer function properly. It is advisable to utilize the uninstaller provided by the specific application rather than directly removing Python.

If the app came pre-installed with your operating system, it is not recommended to uninstall it. Doing so would render any tools reliant on Python inoperable, and some of these tools might be essential to you. In such a scenario, reinstalling the entire operating system would be necessary to restore functionality.

Alternatives

JavaScript: Primarily used for web development, JavaScript is a versatile language with an extensive ecosystem of libraries and frameworks. It is particularly suitable for client-side scripting and interactive web applications.

R: A programming language specifically designed for statistical analysis and data visualization. It excels in the field of data science and is preferred by statisticians and researchers.

Java: A general-purpose language known for its robustness, scalability, and cross-platform compatibility. It is widely used for building enterprise-level applications, Android development, and large-scale systems.

C#: Developed by Microsoft, C# is a versatile language used for building Windows applications, web services, and game development using the Unity engine.

Ruby: A dynamic, object-oriented language known for its simplicity and elegant syntax. It is often used in web development frameworks like Ruby on Rails.

System Requirements
  • Operating System: Windows, macOS, Linux
  • Processor: 1 GHz or faster
  • RAM: 1 GB (minimum), 4 GB or more (recommended)
  • Disk Space: 200 MB for Python installation
PROS
  • Simplicity and readability
  • Vast library ecosystem
  • Cross-platform compatibility
  • Extensive community support
  • Integration capabilities
CONS
  • Global Interpreter Lock (GIL) can limit multi-threading performance
  • Relatively slower execution speed compared to low-level languages
  • Lack of a dedicated GUI (Graphical User Interface)
Conclusion

Python's versatility, simplicity, and extensive library support make it an exceptional programming language for various applications. Its intuitive syntax and broad community support contribute to its popularity among beginners and experienced developers alike. From web development to data science and artificial intelligence, it shines as a powerful and flexible tool.

Whether you are a novice programmer or a seasoned developer, Python's capabilities and vast ecosystem make it a worthy addition to your software toolkit. Good luck from the FileHorse review team with creating an application, data, website, IoT, or game using this amazing programming language!

Also Available: Python (32-bit) and Python for Mac

  • Python 3.12.2 (64-bit) Screenshots

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

What's new in this version:

Security:
- Skip .pth files with names starting with a dot or hidden file attribute

Core and Builtins:
- Changed socket type validation in create_datagram_endpoint() to accept all non-stream sockets. This fixes a regression in compatibility with raw sockets
- Fix a RuntimeWarning emitted when assign an integer-like value that is not an instance of int to an attribute that corresponds to a C struct member of type T_UINT and T_ULONG. Fix a double RuntimeWarning emitted when assign a negative integer value to an attribute that corresponds to a C struct member of type T_UINT
- Fix a regression in the codeop module that was causing it to incorrectly identify incomplete f-strings. Patch by Pablo Galind
- Check for a valid tp_version_tag before performing bytecode specializations that rely on this value being usable
- Fix an error that was causing the parser to try to overwrite existing errors and crashing in the process. Patch by Pablo Galind
- Fix segfault in the compiler on with statement with 19 context managers
- Use per AST-parser state rather than global state to track recursion depth within the AST parser to prevent potential race condition due to simultaneous parsing
- The issue primarily showed up in 3.11 by multithreaded users of ast.parse(). In 3.12 a change to when garbage collection can be triggered prevented the race condition from occurring
- Correctly compute end column offsets for multiline tokens in the tokenize module. Patch by Pablo Galind
- Fix SystemError in the import statement and in __reduce__() methods of builtin types when __builtins__ is not a dict
- Fix UnicodeEncodeError when email.message.get_payload() reads a message with a Unicode surrogate character and the message content is not well-formed for surrogateescape encoding. Patch by Sidney Markowitz

Library:
- Update bundled pip to 24.0
- tarfile no longer ignores errors when trying to extract a directory on top of a file
- Fix support of explicit option value “–” in argparse (e.g. --option=--)
- Fix ctypes structs with array on Windows ARM64 platform by setting MAX_STRUCT_SIZE to 32 in stgdict. Patch by Diego Russ
- Fix a leak of open socket in rare cases when error occurred in ssl.SSLSocket creation
- email.policy.EmailPolicy.fold() now always encodes non-ASCII characters in headers if utf8 is false
- Make the result of termios.tcgetattr() reproducible on Alpine Linux. Previously it could leave a random garbage in some fields
- Revert changes in gh-106584 which made calls of TestResult methods startTest() and stopTest() unbalanced
- Ignore an OSError in asyncio.BaseEventLoop.create_server() when IPv6 is available but the interface cannot actually support it
- Dismiss the FileNotFound error in ctypes.util.find_library() and just return None on Linux
- The tty.setcbreak() and new tty.cfmakecbreak() no longer clears the terminal input ICRLF flag. This fixes a regression introduced in 3.12 that no longer matched how OSes define cbreak mode in their stty(1) manual pages
- Avoid reference cycle in ElementTree.iterparse. The iterator returned by ElementTree.iterparse may hold on to a file descriptor. The reference cycle prevented prompt clean-up of the file descriptor if the returned iterator was not exhausted
- OSError raised when run a subprocess now only has filename attribute set to cwd if the error was caused by a failed attempt to change the current directory
- Enum: correctly handle tuple subclasses in custom __new__
- Fix a reference leak in asyncio.selector_events.BaseSelectorEventLoop when SSL handshakes fail. Patch contributed by Jamie Phan
- Fix possible OverflowError in socket.socket.sendfile() when pass count larger than 2 GiB on 32-bit platform
- Fixed a bug in fractions.Fraction where an invalid string using d in the decimals part creates a different error compared to other invalid letters/characters. Patch by Jeremiah Gabriel Pascual
- Fix the behavior of tag_unbind() methods of tkinter.Text and tkinter.Canvas classes with three arguments. Previously, widget.tag_unbind(tag, sequence, funcid) destroyed the current binding for sequence, leaving sequence unbound, and deleted the funcid command. Now it removes only funcid from the binding for sequence, keeping other commands, and deletes the funcid command. It leaves sequence unbound only if funcid was the last bound command
- Fix tkinter method winfo_pathname() on 64-bit Windows
- unittest runner: Don’t exit 5 if tests were skipped. The intention of exiting 5 was to detect issues where the test suite wasn’t discovered at all. If we skipped tests, it was correctly discovered
- Silence unraisable AttributeError when warnings are emitted during Python finalization
- Restore the ability for zipfile to extractall from zip files with a “/” directory entry in them as is commonly added to zips by some wiki or bug tracker data exporters
- Fix UnicodeEncodeError in email when re-fold lines that contain unknown-8bit encoded part followed by non-unknown-8bit encoded part
- In asyncio.StreamReaderProtocol.connection_made(), there is callback that logs an error if the task wrapping the “connected callback” fails. This callback would itself fail if the task was cancelled. Prevent this by checking whether the task was cancelled first. If so, close the transport but don’t log an error
- Fix resource warnings for unclosed files in pickle and pickletools command line interfaces
- Increase the backlog for multiprocessing.connection.Listener objects created by multiprocessing.manager and multiprocessing.resource_sharer to significantly reduce the risk of getting a connection refused error when creating a multiprocessing.connection.Connection to them
- Make sure that webbrowser.MacOSXOSAScript sends webbrowser.open audit event
- When a second reference to a string appears in the input to pickle, and the Python implementation is in use, we are guaranteed that a single copy gets pickled and a single object is shared when reloaded. Previously, in protocol 0, when a string contained certain characters (e.g. newline) it resulted in duplicate objects
- Fix multiprocessing logger for %(filename)s
- Fix segfaults in the _elementtree module. Fix first segfault during deallocation of _elementtree.XMLParser instances by keeping strong reference to pyexpat module in module state for capsule lifetime. Fix second segfault which happens in the same deallocation process by keeping strong reference to _elementtree module in XMLParser structure for _elementtree module lifetime
- Fix import of unittest.mock when CPython is built without docstrings
- Fix regression in Python 3.12 where Protocol classes that were not marked as runtime-checkable would be unnecessarily introspected, potentially causing exceptions to be raised if the protocol had problematic members. Patch by Alex Waygood
- Fix rendering tracebacks for exceptions with a broken __getattr__
- Fix an AttributeError during asyncio SSL protocol aborts in SSL-over-SSL scenarios
- Update bundled pip to 23.3.2
- Make http.client.HTTPResponse.read1 and http.client.HTTPResponse.readline close IO after reading all data when content length is known. Patch by Illia Volochii
- Fix shutil.copymode() and shutil.copystat() on Windows. Previously they worked differenly if dst is a symbolic link: they modified the permission bits of dst itself rather than the file it points to if follow_symlinks is true or src is not a symbolic link, and did not modify the permission bits if follow_symlinks is false and src is a symbolic link
- Detect line numbers of properties in doctests
- signal.signal() and signal.getsignal() no longer call repr on callable handlers. asyncio.run() and asyncio.Runner.run() no longer call repr on the task results. Patch by Yilei Yang
- Fix ctypes structs with array on PPC64LE platform by setting MAX_STRUCT_SIZE to 64 in stgdict. Patch by Diego Russo
- Ignore FileNotFoundError when remove a temporary directory in the multiprocessing finalizer
- Fix a crash in socket.if_indextoname() with specific value (UINT_MAX). Fix an integer overflow in socket.if_indextoname() on 64-bit non-Windows platforms
- Improve handling of pdb convenience variables to avoid replacing string contents
- Fix a regression caused by a fix to gh-93162 whereby you couldn’t configure a QueueHandler without specifying handlers
- Fix crash during garbage collection of the io.BytesIO buffer object
- Show the Tcl/Tk patchlevel (rather than version) in tkinter._test()
- Protect zipfile from “quoted-overlap” zipbomb. It now raises BadZipFile when try to read an entry that overlaps with other entry or central directory
- On Windows, closing the connection writer when cleaning up a broken multiprocessing.Queue queue is now done for all queues, rather than only in concurrent.futures manager thread. This can prevent a deadlock when a multiprocessing worker process terminates without cleaning up. This completes the backport of patches by Victor Stinner and Serhiy Storchaka
- Fix race condition in trace. Instead of checking if a directory exists and creating it, directly call os.makedirs() with the kwarg exist_ok=True
- Set unixfrom envelope in mailbox.mbox and mailbox.MMDF
- Fix stacklevel in InvalidTZPathWarning during zoneinfo module import
- Allow ctypes.Union to be nested in ctypes.Structure when the system endianness is the opposite of the classes
- Fix null pointer dereference in lzma._decode_filter_properties() due to improper handling of BCJ filters with properties of zero length. Patch by Radislav Chugunov
- When os.fork() is called from a foreign thread (aka _DummyThread), the type of the thread in a child process is changed to _MainThread. Also changed its name and daemonic status, it can be now joined
- bpo-35928: io.TextIOWrapper now correctly handles the decoding buffer after read() and write()
- bpo-26791: shutil.move() now moves a symlink into a directory when that directory is the target of the symlink. This provides the same behavior as the mv shell command. The previous behavior raised an exception. Patch by Jeffrey Kintscher
- bpo-36959: Fix some error messages for invalid ISO format string combinations in strptime() that referred to directives not contained in the format string. Patch by Gordon P. Hemsley
- bpo-18060: Fixed a class inheritance issue that can cause segfaults when deriving two or more levels of subclasses from a base class of Structure or Union

Documentation:
- Improved markup for valid options/values for methods ttk.treeview.column and ttk.treeview.heading, and for Layouts
- Document that the asyncio module contains code taken from v0.16.0 of the uvloop project, as well as the required MIT licensing information

Tests:
- Fix test_tarfile_vs_tar in test_shutil for macOS, where system tar can include more information in the archive than shutil.make_archive
- Fix test.test_zipfile.test_core.TestWithDirectory.test_create_directory_with_write test in AIX by doing a bitwise AND of 0xFFFF on mode , so that it will be in sync with zinfo.external_attr
- bpo-40648: Test modes that file can get with chmod() on Windows.

Build:
- Fixed the check-clean-src step performed on out of tree builds to detect errant $(srcdir)/Python/frozen_modules/*.h files and recommend appropriate source tree cleanup steps to get a working build again.
- Fix the build for the case that WITH_PYMALLOC_RADIX_TREE=0 set.
- bpo-11102: The os.major(), os.makedev(), and os.minor() functions are now available on HP-UX v3.
- bpo-36351: Do not set ipv6type when cross-compiling.

Windows:
- Update Windows build to use OpenSSL 3.0.13
- Update Windows builds to use zlib v1.3.1
- The py.exe launcher will no longer attempt to run the Microsoft Store redirector when launching a script containing a /usr/bin/env sheban
- Process privileges that are activated for creating directory junctions are now restored afterwards, avoiding behaviour changes in other parts of the program
- os.stat() calls were returning incorrect time values for files that could not be accessed directly
- multiprocessing: On Windows, fix a race condition in Process.terminate(): no longer set the returncode attribute to always call WaitForSingleObject() in Process.wait(). Previously, sometimes the process was still running after TerminateProcess() even if GetExitCodeProcess() is not STILL_ACTIVE. Patch by Victor Stinner
- Correctly sort and remove duplicate environment variables in _winapi.CreateProcess()
- bpo-37308: Fix mojibake in mmap.mmap when using a non-ASCII tagname argument on Windows

IDLE:
- In idlelib code, stop redefining built-ins ‘dict’ and ‘object’
- Improve the lists of features, editor key bindings, and shell key bingings in the IDLE doc
- Fix rare failure of test.test_idle, in test_configdialog
- Fix the “Help -> IDLE Doc” menu bug in 3.11.7 and 3.12.1
- Fix test_editor hang on macOS Catalina
- Fix processing unsaved files when quitting IDLE on macOS
- Revise IDLE bindings so that events from mouse button 4/5 on non-X11 windowing systems (i.e. Win32 and Aqua) are not mistaken for scrolling
- bpo-13586: Enter the selected text when opening the “Replace” dialog

Tools/Demos:
- Update GitHub CI workflows to use OpenSSL 3.0.13 and multissltests to use 1.1.1w, 3.0.13, 3.1.5, and 3.2.1
- Fix a bug in Argument Clinic that generated incorrect code for methods with no parameters that use the METH_METHOD | METH_FASTCALL | METH_KEYWORDS calling convention. Only the positional parameter count was checked; any keyword argument passed would be silently accepted.

Join our mailing list

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

Subscribe