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, **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)
46
if isinstance(package, list):
47
command.extend(package)
49
command.append(package)
51
log("Installing {} package with options: {}".format(package,
56
def pip_uninstall(package, **options):
57
"""Uninstall a python package"""
58
command = ["uninstall", "-q", "-y"]
60
available_options = ('proxy', 'log', )
61
for option in parse_options(options, available_options):
62
command.append(option)
64
if isinstance(package, list):
65
command.extend(package)
67
command.append(package)
69
log("Uninstalling {} package with options: {}".format(package,
75
"""Returns the list of current python installed packages
77
return pip_execute(["list"])