fabtools.python

Python environments and packages

This module provides tools for using Python virtual environments and installing Python packages using the pip installer.

Virtual environments

fabtools.python.virtualenv(*args, **kwds)[source]

Context manager to activate an existing Python virtual environment.

from fabric.api import run
from fabtools.python import virtualenv

with virtualenv('/path/to/virtualenv'):
    run('python -V')

Installing pip

fabtools.python.is_pip_installed(version=None, pip_cmd='pip')[source]

Check if pip is installed.

fabtools.python.install_pip(python_cmd='python', use_sudo=True)[source]

Install the latest version of pip, using the given Python interpreter.

import fabtools

if not fabtools.python.is_pip_installed():
    fabtools.python.install_pip()

Note

pip is automatically installed inside a virtualenv, so there is no need to install it yourself in this case.

Installing packages

fabtools.python.is_installed(package, pip_cmd='pip')[source]

Check if a Python package is installed (using pip).

Package names are case insensitive.

Example:

from fabtools.python import virtualenv
import fabtools

with virtualenv('/path/to/venv'):
    fabtools.python.install('Flask')
    assert fabtools.python.is_installed('flask')
fabtools.python.install(packages, upgrade=False, download_cache=None, allow_external=None, allow_unverified=None, quiet=False, pip_cmd='pip', use_sudo=False, user=None, exists_action=None)[source]

Install Python package(s) using pip.

Package names are case insensitive.

Starting with version 1.5, pip no longer scrapes insecure external urls by default and no longer installs externally hosted files by default. Use allow_external=['foo', 'bar'] or allow_unverified=['bar', 'baz'] to change these behaviours for specific packages.

Examples:

import fabtools

# Install a single package
fabtools.python.install('package', use_sudo=True)

# Install a list of packages
fabtools.python.install(['pkg1', 'pkg2'], use_sudo=True)
fabtools.python.install_requirements(filename, upgrade=False, download_cache=None, allow_external=None, allow_unverified=None, quiet=False, pip_cmd='pip', use_sudo=False, user=None, exists_action=None)[source]

Install Python packages from a pip requirements file.

import fabtools

fabtools.python.install_requirements('project/requirements.txt')