diff --git a/lib/ansible/modules/packaging/language/pip.py b/lib/ansible/modules/packaging/language/pip.py index f1ca9d76156..df41251b81c 100755 --- a/lib/ansible/modules/packaging/language/pip.py +++ b/lib/ansible/modules/packaging/language/pip.py @@ -19,11 +19,6 @@ # along with Ansible. If not, see . # -import tempfile -import re -import os -import sys - DOCUMENTATION = ''' --- module: pip @@ -46,8 +41,8 @@ options: default: null requirements: description: - - The path to a pip requirements file, which should be local to the remote system. - File can be specified as a relative path if using the chdir option. + - The path to a pip requirements file, which should be local to the remote system. + File can be specified as a relative path if using the chdir option. required: false default: null virtualenv: @@ -186,6 +181,14 @@ EXAMPLES = ''' become: True ''' +import tempfile +import re +import os +import sys + +from ansible.module_utils.basic import AnsibleModule + + def _get_cmd_options(module, cmd): thiscmd = cmd + " --help" rc, stdout, stderr = module.run_command(thiscmd) @@ -209,7 +212,8 @@ def _get_packages(module, pip, chdir): '''Return results of pip command to get packages.''' # Try 'pip list' command first. command = '%s list' % pip - rc, out, err = module.run_command(command, cwd=chdir) + lang_env = dict(LANG='C', LC_ALL='C', LC_MESSAGES='C') + rc, out, err = module.run_command(command, cwd=chdir, environ_update=lang_env) # If there was an error (pip version too old) then use 'pip freeze'. if rc != 0: @@ -334,9 +338,8 @@ def main(): module.fail_json(msg="umask must be an octal integer", details=str(sys.exc_info()[1])) - old_umask = None - if umask != None: + if umask is not None: old_umask = os.umask(umask) try: if state == 'latest' and version is not None: @@ -435,8 +438,10 @@ def main(): changed = False 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] for pkg in name: - is_present = _is_present(pkg, version, out.split('\n'), 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): changed = True break @@ -472,10 +477,8 @@ def main(): state=state, requirements=requirements, virtualenv=env, stdout=out, stderr=err) finally: - if old_umask != None: + if old_umask is not None: os.umask(old_umask) -# import module snippets -from ansible.module_utils.basic import * - -main() +if __name__ == '__main__': + main()