<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def exec_python(attr, src, executable="python"):
 """Runs a python subproc to calculate a package attribute. Args: attr (str):
 Name of package attribute being created. src (list of str):
 Python code to execute, will be converted into semicolon-delimited single line of code. Returns: str: Output of python process. """

    import subprocess

    if isinstance(src, basestring):
        src = [src]

    p = popen([executable, "-c", "; ".join(src)],
              stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    out, err = p.communicate()

    if p.returncode:
        from rez.exceptions import InvalidPackageError
        raise InvalidPackageError(
            "Error determining package attribute '%s':\n%s" % (attr, err))

    return out.strip()