Installs Python on Windows

Kevin Chang



6,268 latest version

2.4 quality score

Version information

  • 1.0.1 (latest)
  • 1.0.0
released Jul 20th 2016
This version is compatible with:
  • Windows

Start using this module


kckaiwei/wpython — version 1.0.1 Jul 20th 2016

wpython Build Status

Table of Contents

  1. Description
  2. Setup - The basics of getting started with wpython
  3. Usage - Configuration options and additional functionality
  4. Reference - An under-the-hood peek at what the module is doing and how
  5. Limitations - OS compatibility, etc.
  6. Development - Guide for contributing to the module


wpython is a puppet module that installs a version of Python onto a Window server. wpython supports version selection as well as uninstalltion.


What wpython affects

wpython uses the package resource to install and manage Python on a Windows server. Additionally, it may create a directory to hold Python installation files.

Setup Requirements

wpython has no dependencies. wpython will work with Puppet straight out of the box.


Use this command to install wpython:

puppet module install kckaiwei-wpython

wpython is only needed to be installed on the puppetmaster server. Installation can be done through the puppet forge, or manually.

For a manual installation, download this module as a zip, and unzip it in your modules folder. The wpython module directory should be simply named "wpython", so the node definition will recognize the module as wpython.

Note: If installing manually, or from this repository, ensure the folder is named "wpython" so Puppet can locate the module.


wpython is used by setting variables into your node definition. wpython can be declared as a class, or simply included. Provided is an example of each use case.

  node default {
    class { 'wpython':
      version           => '2.7.11',
      downloaddirectory => 'C:\downloads',
      uninstall         => false,
  node default {
    include wpython



init.pp is the base class. It inherits default parameters from params.pp, and calls install.pp

  $version          = $wpython::version
  $downloaddirectry = $wpython::downloaddirectory
  $uninstall        = $wpython::uninstall

Variables are declared here based on their values in the params.pp file. This provides a default value to be used if no value is set, e.g. using include wpython in the node definition, as opposed to adding the module as a class.


params.pp stores the parameters defaults. The defaults are used if no parameters are supplied to init.pp unless the node definition overrides it.

  $version           = "2.7.12"
  $downloaddirectory = "C:/pythonfiles"
  $uninstall         = false

Default parameters are listed here. These are hardcoded and can be changed if you want to have a different default value when setting your own node definitions.


install.pp is the class that handles the installs and uninstalls

if versioncmp('3.5', $version) <= 0{
elsif versioncmp('3.0', $version) <=0{
else {

We take the version number passed by the node definition to determine what resources need to be applied. Python executables change from .msi to .exe and the resource, 'package', cannot do the same actions for both of them, hence we break up the class based on version number.

versioncmp is a Puppet function that compares version numbers passed as strings. It compares the first to the second, and depending on if it is larger, equal or less, it will return a 1, 0 or -1 respectively.

    file { '/etc/puppetlabs/code/environments/production/modules/ilorest/':
      ensure => directory,
      mode   => '0755',

    file { '/etc/puppetlabs/code/environments/production/modules/ilorest/files':
      ensure  => directory,
      source  => 'puppet:///modules/ilorest',
      recurse => true,
      require => File['/etc/puppetlabs/code/environments/production/modules/ilorest'],

File directories are created and files copied over, then managed by the master server to ensure that each node will have the required files. Note that the folder containing ilorest must already exist. Since Puppet is installed, this folder should already exist. If not, the directory path must be adjusted or the directory created.


wpython only provides support for Windows, seeing how there are already modules to install Python for 'nix distributions out there. wpython covers all released versions of Python as of this writing.

wpython has been tested on:

  • Puppet 4.4
  • Puppet Enterprise 2016.2


  • Fork it!
  • Create your feature branch: git checkout -b my-new-feature
  • Commit your changes: git commit -am 'Add some feature'
  • Push to the branch: git push origin my-new-feature
  • Submit a pull request

Release Notes/Contributors/Etc.

Version 1.0

  1. Initial Release
  • Supports all Python versions as of 7/12/2016
  • Supports Windows Server 2012

Tested on:

  • Windows Server 2012

Python versions tested:

  • 2.7.12
  • 3.4.0
  • 3.5.1
  • 3.5.2