pip list isn't available on pip less than 1.3 so make a fallback (#4947)
This commit is contained in:
parent
b18c22f69b
commit
a8fbdcd80d
1 changed files with 27 additions and 2 deletions
|
@ -424,7 +424,6 @@ def main():
|
||||||
if requirements:
|
if requirements:
|
||||||
cmd += ' -r %s' % requirements
|
cmd += ' -r %s' % requirements
|
||||||
|
|
||||||
|
|
||||||
if module.check_mode:
|
if module.check_mode:
|
||||||
if extra_args or requirements or state == 'latest' or not name:
|
if extra_args or requirements or state == 'latest' or not name:
|
||||||
module.exit_json(changed=True)
|
module.exit_json(changed=True)
|
||||||
|
@ -438,8 +437,34 @@ def main():
|
||||||
|
|
||||||
changed = False
|
changed = False
|
||||||
if name:
|
if name:
|
||||||
# Pip spits an upgrade notice to stdout that we have to get rid of
|
|
||||||
pkg_list = [p for p in out.split('\n') if not p.startswith('You are using') and not p.startswith('You should consider') and p]
|
pkg_list = [p for p in out.split('\n') if not p.startswith('You are using') and not p.startswith('You should consider') and p]
|
||||||
|
if pkg_cmd.endswith(' freeze') and ('pip' in name or 'setuptools' in name):
|
||||||
|
# Older versions of pip (pre-1.3) do not have pip list.
|
||||||
|
# pip freeze does not list setuptools or pip in its output
|
||||||
|
# So we need to get those via a specialcase
|
||||||
|
if 'setuptools' in name:
|
||||||
|
try:
|
||||||
|
import setuptools
|
||||||
|
except ImportError:
|
||||||
|
# Could not import, assume that it is not installed
|
||||||
|
pass
|
||||||
|
else:
|
||||||
|
formatted_dep = 'setuptools==%s' % setuptools.__version__
|
||||||
|
pkg_list.append(formatted_dep)
|
||||||
|
out += '%s\n' % formatted_dep
|
||||||
|
|
||||||
|
if 'pip' in name:
|
||||||
|
try:
|
||||||
|
import pkg_resources
|
||||||
|
except ImportError:
|
||||||
|
# Could not import pkg_resources. pip requires
|
||||||
|
# pkg_resources so assume that it is not installed
|
||||||
|
pass
|
||||||
|
else:
|
||||||
|
formatted_dep = 'pip==%s' % pkg_resources.get_distribution('pip').version
|
||||||
|
pkg_list.append(formatted_dep)
|
||||||
|
out += '%s\n' % formatted_dep
|
||||||
|
|
||||||
for pkg in name:
|
for pkg in name:
|
||||||
is_present = _is_present(pkg, version, pkg_list, pkg_cmd)
|
is_present = _is_present(pkg, version, pkg_list, pkg_cmd)
|
||||||
if (state == 'present' and not is_present) or (state == 'absent' and is_present):
|
if (state == 'present' and not is_present) or (state == 'absent' and is_present):
|
||||||
|
|
Loading…
Reference in a new issue