def copy_module(name, destpath): success, out, err = run_python_command([ "import %s" % name, "print %s.__path__[0] if hasattr(%s, '__path__') else ''" % (name, name) ]) if out: srcpath = out shutil.copytree(srcpath, os.path.join(destpath, name)) else: success, out, err = run_python_command( ["import %s" % name, "print %s.__file__" % name]) if not success: raise RezBindError("Couldn't locate module %s: %s" % (name, err)) srcfile = out dirpart, ext = os.path.splitext(srcfile) if ext == ".pyc": pyfile = dirpart + ".py" if os.path.exists(pyfile): srcfile = pyfile destfile = os.path.join(destpath, os.path.basename(srcfile)) shutil.copy2(srcfile, destfile)
def copy_module(name, destpath): success, out, err = run_python_command( ["import %s" % name, "print %s.__path__[0] if hasattr(%s, '__path__') else ''" % (name, name)]) if out: srcpath = out shutil.copytree(srcpath, os.path.join(destpath, name)) else: success, out, err = run_python_command( ["import %s" % name, "print %s.__file__" % name]) if not success: raise RezBindError("Couldn't locate module %s: %s" % (name, err)) srcfile = out dirpart, ext = os.path.splitext(srcfile) if ext == ".pyc": pyfile = dirpart + ".py" if os.path.exists(pyfile): srcfile = pyfile destfile = os.path.join(destpath, os.path.basename(srcfile)) shutil.copy2(srcfile, destfile)
def bind(path, version_range=None, opts=None, parser=None): # find executable, determine version exepath = find_exe("python", opts.exe) code = "import sys; print '.'.join(str(x) for x in sys.version_info)" version = extract_version(exepath, ["-c", code]) check_version(version, version_range) log("binding python: %s" % exepath) # find builtin modules builtin_paths = {} entries = [("lib", "os"), ("extra", "setuptools")] for dirname, module_name in entries: success, out, err = run_python_command([ "import %s" % module_name, "print %s.__file__" % module_name]) if success: pypath = os.path.dirname(out) if os.path.basename(pypath) == module_name: pypath = os.path.dirname(pypath) if pypath not in builtin_paths.values(): builtin_paths[dirname] = pypath # make the package # def make_root(variant, root): binpath = make_dirs(root, "bin") link = os.path.join(binpath, "python") platform_.symlink(exepath, link) if builtin_paths: pypath = make_dirs(root, "python") for dirname, srcpath in builtin_paths.iteritems(): destpath = os.path.join(pypath, dirname) log("Copying builtins from %s to %s..." % (srcpath, destpath)) shutil.copytree(srcpath, destpath) with make_package("python", path, make_root=make_root) as pkg: pkg.version = version pkg.tools = ["python"] pkg.commands = commands pkg.variants = [system.variant] if builtin_paths: pkg.post_commands = post_commands return pkg.installed_variants