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
==, >=, <=. Ifrequirementsorpkgsis given, this parameter will be ignored.Example:
django: pip.installed: - name: django >= 1.6, <= 1.7 - require: - pkg: python-pip
Installs the latest Django version greater than 1.6 but less than 1.7.
- pkgs
A list of python packages to install. This let you install multiple packages at the same time.
Example:
django-and-psycopg2: pip.installed: - pkgs: - django >= 1.6, <= 1.7 - psycopg2 >= 2.8.4 - require: - pkg: python-pip
Installs the latest Django version greater than 1.6 but less than 1.7 and the latest psycopg2 greater than 2.8.4 at the same time.
- 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
builddir- target
Install packages into
targetdir- download
Download packages into
downloadinstead of installing them- download_cache
Cache downloaded packages in
download_cachedir- source
Check out
editablepackages intosourcedir- 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
- 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.
- 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.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_wheeloption 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
pipalready does a pretty good job parsing its own requirements. It makes no sense for Salt to dopiprequirements parsing and validation before passing them to thepiplibrary. It's functionality duplication and it's more error prone.Attention
Please set
reload_modules: Trueto 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)