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, **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_wheel : False
- Prefer wheel archives (requires pip>=1.4)
- no_use_wheel : False
- 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:[email protected]:port. Note that the user:password@ is optional and required only if you are behind an authenticated proxy. If you provide [email protected]: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_env : None
- 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_bin : None
- 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.
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
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_env : None
- 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)
-
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)