Python is a portable, interpreted, interactive, object-oriented programming language popular for both standalone and Web applications. It provides constructs that enable clear programming of small and large scale software applications. https://www.python.org/ Version 2 has been available to Alpha and Itanium VMS for a couple of decades, initially due to the porting efforts of Jean-François Piéronne (JFP), and now with a company sponsored VSI version 3 port for both Itanium and x86-64 (no Alpha -- version 2 continues to be available from some VMS sites for those remaining on the platform). https://vmssoftware.com/products/python/ WASD has long had a Run-Time Envrionment (RTE) for Python https://wasd.vsm.com.au/wasd_root/wasdoc/scripting/#runtimeenvironments providing a low-latency, internal byte-code compiling and caching, scripting engine for Python. Again, initially encouraged and refined by JFP, this RTE continues to provide Python for users of WASD. https://wasd.vsm.com.au/wasd_root/src/python/readmore.html The Python 3 product from VSI is a completely new port and comes with some considerations https://wiki.vmssoftware.com/VMS_Python_compatibility_issues There are of course the VMS-specific modules and capabilities initially provided by the JFP packages https://wiki.vmssoftware.com/VMS-Specific_Python_Modules Those for whom continuing punishment is a life-choice, the VSI Python 3 code repository can be found at https://github.com/vmssoftware/cpython/tree/openvms-3.10.0/ https://github.com/vmssoftware/cpython/tree/openvms-3.10.0/vms PyRTE is now concentrating on version 3 but still can/should be compiled for version 2. Object modules are provided only for version 3. Download from the usual repository https://wasd.vsm.com.au/wasd/ Alternatively, look for an earlier version (perhaps for Python 2) using https://wasd.vsm.com.au/wasd_archive/py*.* TIP: As a runtime enhancement, when a program is executed by Python 3, the interpreter compiles it to bytecode first (oversimplification) and stores it in a subdirectory named __pycache__. In that there are files sharing the names of the .py files in the parent directory, with the extensions either .pyc or .pyo. PyRTE uses any pre-compiled byte code (files) if present but DOES NOT GENERATE these (reason; it compiles bytecode into memory as a cache). However, any command-line or other bytecode generated by an alternate account (e.g. SYSTEM) may generate a slew of protection alarms due to the scripting account not having access. After bytecode compilation ensure access to the account(s) using the code. Bytecode generation can be suppressed by using the -B switch at the command-line or setting the manifest PYTHONDONTWRITEBYTECODE environment variable (symbol or logical name). This item is one of a collection at https://wasd.vsm.com.au/other/#occasional