# salt.states.pip_state

## Installation of Python Packages Using pip

These states manage system installed python packages. Note that pip must be installed for these states to be available, so pip states should include a requisite to a pkg.installed state for the package which provides pip (`python-pip` in most cases). Example:

    python-pip:
      pkg.installed

    virtualenvwrapper:
      pip.installed:
        - require:
          - pkg: python-pip

salt.states.pip_state.installed(name, pkgs=None, pip_bin=None, requirements=None, bin_env=None, use_wheel=False, no_use_wheel=False, log=None, proxy=None, timeout=None, repo=None, editable=None, find_links=None, index_url=None, extra_index_url=None, no_index=False, mirrors=None, build=None, target=None, download=None, download_cache=None, source=None, upgrade=False, force_reinstall=False, ignore_installed=False, exists_action=None, no_deps=False, no_install=False, no_download=False, install_options=None, global_options=None, user=None, cwd=None, pre_releases=False, cert=None, allow_all_external=False, allow_external=None, allow_unverified=None, process_dependency_links=False, env_vars=None, use_vt=False, trusted_host=None, no_cache_dir=False, cache_dir=None, no_binary=None, extra_args=None, **kwargs)

  Make sure the package is installed

  name

    The name of the python package to install. You can also specify version numbers here using the standard operators `==, >=, <=`. If `requirements` is given, this parameter will be ignored.

  Example:

      django:
        pip.installed:
          - name: django >= 1.6, <= 1.7
          - require:
            - pkg: python-pip

  This will install the latest Django version greater than 1.6 but less than 1.7.

  requirements

    Path to a pip requirements file. If the path begins with salt:// the file will be transferred from the master file server.

  user

    The user under which to run pip

  use_wheelFalse

    Prefer wheel archives (requires pip>=1.4)

  no_use_wheelFalse

    Force to not use wheel archives (requires pip>=1.4)

  no_binary

    Force to not use binary packages (requires pip >= 7.0.0) Accepts either :all: to disable all binary packages, :none: to empty the set, or a list of one or more packages

  Example:

      django:
        pip.installed:
          - no_binary: ':all:'

      flask:
        pip.installed:
          - no_binary:
            - itsdangerous
            - click

  log

    Log file where a complete (maximum verbosity) record will be kept

  proxy

    Specify a proxy in the form user:passwd@proxy.server:port. Note that the user:password@ is optional and required only if you are behind an authenticated proxy. If you provide user@proxy.server:port then you will be prompted for a password.

  timeout

    Set the socket timeout (default 15 seconds)

  editable

    install something editable (i.e. git+https://github.com/worldcompany/djangoembed.git#egg=djangoembed)

  find_links

    URL to look for packages at

  index_url

    Base URL of Python Package Index

  extra_index_url

    Extra URLs of package indexes to use in addition to `index_url`

  no_index

    Ignore package index

  mirrors

    Specific mirror URL(s) to query (automatically adds --use-mirrors)

  build

    Unpack packages into `build` dir

  target

    Install packages into `target` dir

  download

    Download packages into `download` instead of installing them

  download_cache

    Cache downloaded packages in `download_cache` dir

  source

    Check out `editable` packages into `source` dir

  upgrade

    Upgrade all packages to the newest available version

  force_reinstall

    When upgrading, reinstall all packages even if they are already up-to-date.

  ignore_installed

    Ignore the installed packages (reinstalling instead)

  exists_action

    Default action when a path already exists: (s)witch, (i)gnore, (w)ipe, (b)ackup

  no_deps

    Ignore package dependencies

  no_install

    Download and unpack all packages, but don't actually install them

  no_cache_dir:

    Disable the cache.

  cwd

    Current working directory to run pip from

  pre_releases

    Include pre-releases in the available versions

  cert

    Provide a path to an alternate CA bundle

  allow_all_external

    Allow the installation of all externally hosted files

  allow_external

    Allow the installation of externally hosted files (comma separated list)

  allow_unverified

    Allow the installation of insecure and unverifiable files (comma separated list)

  process_dependency_links

    Enable the processing of dependency links

  bin_envNone

    Absolute path to a virtual environment directory or absolute path to a pip executable. The example below assumes a virtual environment has been created at `/foo/.virtualenvs/bar`.

  env_vars

    Add or modify environment variables. Useful for tweaking build steps, such as specifying INCLUDE or LIBRARY paths in Makefiles, build scripts or compiler calls. This must be in the form of a dictionary or a mapping.

    Example:

        django:
          pip.installed:
            - name: django_app
            - env_vars:
                CUSTOM_PATH: /opt/django_app
                VERBOSE: True

  use_vt

    Use VT terminal emulation (see output while installing)

  trusted_host

    Mark this host as trusted, even though it does not have valid or any HTTPS.

  Example:

      django:
        pip.installed:
          - name: django >= 1.6, <= 1.7
          - bin_env: /foo/.virtualenvs/bar
          - require:
            - pkg: python-pip

  Or

  Example:

      django:
        pip.installed:
          - name: django >= 1.6, <= 1.7
          - bin_env: /foo/.virtualenvs/bar/bin/pip
          - require:
            - pkg: python-pip

  Attention

  The following arguments are deprecated, do not use.

  pip_binNone

    Deprecated, use `bin_env`

  Changed in version 0.17.0: `use_wheel` option added.

  install_options

  > Extra arguments to be supplied to the setup.py install command. If you are using an option with a directory path, be sure to use absolute path.

  > Example:

  >     django:
  >       pip.installed:
  >         - name: django
  >         - install_options:
  >           - --prefix=/blah
  >         - require:
  >           - pkg: python-pip

  global_options

    Extra global options to be supplied to the setup.py call before the install command.

    New in version 2014.1.3.

  Attention

  As of Salt 0.17.0 the pip state needs an importable pip module. This usually means having the system's pip package installed or running Salt from an active virtualenv.

  The reason for this requirement is because `pip` already does a pretty good job parsing its own requirements. It makes no sense for Salt to do `pip` requirements parsing and validation before passing them to the `pip` library. It's functionality duplication and it's more error prone.

  Attention

  Please set `reload_modules: True` to have the salt minion import this module after installation.

  Example:

      pyopenssl:
          pip.installed:
              - name: pyOpenSSL
              - reload_modules: True
              - exists_action: i

  extra_args

    pip keyword and positional arguments not yet implemented in salt

        pandas:
          pip.installed:
            - name: pandas
            - extra_args:
              - --latest-pip-kwarg: param
              - --latest-pip-arg

    Warning

    If unsupported options are passed here that are not supported in a minion's version of pip, a No such option error will be thrown.

  If you are using onedir packages and you need to install python packages into the system python environment, you must provide the pip_bin or bin_env to the pip state module.

      lib-foo:
        pip.installed:
          - pip_bin: /usr/bin/pip3
      lib-bar:
        pip.installed:
          - bin_env: /usr/bin/python3

salt.states.pip_state.pip_has_exceptions_mod(ver)

  True when the pip version has the pip.exceptions module

salt.states.pip_state.pip_has_internal_exceptions_mod(ver)

  True when the pip version has the pip._internal.exceptions module

salt.states.pip_state.purge_pip()

  Purge pip and its sub-modules

salt.states.pip_state.removed(name, requirements=None, bin_env=None, log=None, proxy=None, timeout=None, user=None, cwd=None, use_vt=False)

  Make sure that a package is not installed.

  name

    The name of the package to uninstall

  user

    The user under which to run pip

  bin_envNone

    the pip executable or virtualenenv to use

  use_vt

    Use VT terminal emulation (see output while installing)

salt.states.pip_state.uptodate(name, bin_env=None, user=None, cwd=None, use_vt=False)

  New in version 2015.5.0.

  Verify that the system is completely up to date.

  name

    The name has no functional value and is only used as a tracking reference

  user

    The user under which to run pip

  bin_env

    the pip executable or virtualenenv to use

  use_vt

    Use VT terminal emulation (see output while installing)