<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:

def require(*args, **kwargs):
    '''
    Install a set of packages using pip
    
    This is designed to be an interface for IPython notebooks that
    replicates the requirements.txt pip format. This lets notebooks
    specify which versions of packages they need inside the notebook
    itself.

    This function is the general-purpose interface that lets
    the caller specify any version string for any package.

    '''
    # If called with no arguments, returns requirements list
    if not args and not kwargs:
        return freeze()

    # Construct array of requirements
    requirements = list(args)
    extra = ['{}{}'.format(kw, kwargs[kw]) for kw in kwargs]
    requirements.extend(extra)
    args = ['install', '-q']
    args.extend(requirements)
    pip.main(args)