4
__author__ = "Jorge Niedbalski <jorge.niedbalski@canonical.com>"
6
from charmhelpers.fetch import apt_install, apt_update
7
from charmhelpers.core.hookenv import log
10
from pip import main as pip_execute
13
apt_install('python-pip')
14
from pip import main as pip_execute
17
def parse_options(given, available):
18
"""Given a set of options, check if available"""
19
for key, value in sorted(given.items()):
21
yield "--{0}={1}".format(key, value)
24
def pip_install_requirements(requirements, **options):
25
"""Install a requirements file """
28
available_options = ('proxy', 'src', 'log', )
29
for option in parse_options(options, available_options):
30
command.append(option)
32
command.append("-r {0}".format(requirements))
33
log("Installing from file: {} with options: {}".format(requirements,
38
def pip_install(package, fatal=False, upgrade=False, **options):
39
"""Install a python package"""
42
available_options = ('proxy', 'src', 'log', "index-url", )
43
for option in parse_options(options, available_options):
44
command.append(option)
47
command.append('--upgrade')
49
if isinstance(package, list):
50
command.extend(package)
52
command.append(package)
54
log("Installing {} package with options: {}".format(package,
59
def pip_uninstall(package, **options):
60
"""Uninstall a python package"""
61
command = ["uninstall", "-q", "-y"]
63
available_options = ('proxy', 'log', )
64
for option in parse_options(options, available_options):
65
command.append(option)
67
if isinstance(package, list):
68
command.extend(package)
70
command.append(package)
72
log("Uninstalling {} package with options: {}".format(package,
78
"""Returns the list of current python installed packages
80
return pip_execute(["list"])