Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time


A cookbook for managing python-related resources in a simple way
This is mostly a ripoff of the python cookbook, since it's both deprecated and has its resource names stolen by poise-python cookbook

  • backslasher_python_pip_installer: Makes sure a python envrionment has pip installed
  • backslasher_python_pip: A pip package
  • backslasher_python_virtualenv: A virtual environment

Supported Platforms

Should work on normal Linux boxes. Possibly on Windows.
I'm testing on:

  • Ubuntu 14.04
  • CentOS 6 (6.7)
  • CentOS 7 (7.1)


  • ['backslasher-python']['install_method']: How to install python. Defaults to package. I'm currently not supoorting any other method.



The works - installs Python, pip and virtualenv.
Python is installed according to ['backslasher-python']['install_method']


Installs python using the repo's packages.
Provides both python runtime and Python development headers


Installs pip on the "regular" Python (the one available as python)


Installs the virtualenv pip package on the "regular" Python. Also makes sure pip is installed.



Installs pip on a specific python executable


  • python_path: Python binary to install pip on.
    Defaults to python, which should find the "system" python

Note: This action might overwrite the "primary" pip binary. There is no easy way to avoid this since there is no way to instruct setuptools not to create "entry points". I'll happily accept a PR for fixing this.


Installs/removed/upgrades a pip package


  • install: Install the pip package
  • upgrade: Upgrade the pip package if it is uninstalled / has version mismatch. Will upgrade to latest by default.
  • remove: Remove the pip package if installed


  • python_path: Python binary to install on.
    Not relevant if using virtualenv property.
    Defaults to python, which should find the "system" python.
  • package_name: Pip package to install. Defaults to the resource's name
  • ``package_url: Optional. Used to specify a URL to install the package from (e.g. pip install git+git://`)
  • version: Optional. Specifies a pip version to install
  • virtualenv: Optional. Specifies a virtualenv path to install/remove the pip package in
  • timeout: Time allotted for pip commands. Defaults to 900 seconds (15 min)
  • ``user`: User to run the commands under
  • group: Group to run the commands under
  • environment: Hash of environment variables to pass to the pip commands
  • install_options: An array of arguments to pass to the pip commands when installing / upgrading packages
  • smart\_install: Uses a python script to check if package should be installed. Avoids running pip (and marking the resource as updated) "for nothing". Does not work in edge cases, so disabled by default.


Manages a python virtualenv


  • create: Creates the virtualenv
  • delete: Deletes the virtualenv


  • path: Location inside the filesystem of the virtualenv. Defaults to the resource's name
  • interpreter: Optional. Python binary used for venv. Defaults to the system python
  • owner: Optional. Owning user of the virtualenv
  • group: Optional. Owning group of the virtualenv
  • options: Optional. A string of arguments to pass the virtualenv creator

License and Authors

Licensed GPL v2
Author: Nitzan Raz (backslasher)

I'll be happy to accept contributions or to hear from you!