예제 #1
0
파일: py_modules.py 프로젝트: tchordia/ray
    def _download_and_install_wheel(self,
                                    uri: str,
                                    logger: Optional[
                                        logging.Logger] = default_logger):
        """Download and install a wheel URI, and then delete the local wheel file."""
        wheel_file = download_and_unpack_package(uri,
                                                 self._resources_dir,
                                                 logger=logger)
        module_dir = self._get_local_dir_from_uri(uri)

        pip_install_cmd = [
            "pip",
            "install",
            wheel_file,
            f"--target={module_dir}",
        ]
        logger.info("Running py_modules wheel install command: %s",
                    str(pip_install_cmd))
        try:
            exit_code, output = exec_cmd_stream_to_logger(
                pip_install_cmd, logger)
        finally:
            if Path(wheel_file).exists():
                Path(wheel_file).unlink()

            if exit_code != 0:
                if Path(module_dir).exists():
                    Path(module_dir).unlink()
                raise RuntimeError(
                    f"Failed to install py_modules wheel {wheel_file}"
                    f"to {module_dir}:\n{output}")
        return module_dir
예제 #2
0
파일: java_jars.py 프로젝트: tchordia/ray
 def _download_jars(
     self, uri: str, logger: Optional[logging.Logger] = default_logger
 ):
     """Download a jar URI."""
     jar_file = download_and_unpack_package(uri, self._resources_dir, logger=logger)
     module_dir = self._get_local_dir_from_uri(uri)
     logger.debug(f"Succeeded to download jar file {jar_file} .")
     return module_dir
예제 #3
0
파일: java_jars.py 프로젝트: tchordia/ray
        def _create():
            if is_jar_uri(uri):
                module_dir = self._download_jars(uri=uri, logger=logger)
            else:
                module_dir = download_and_unpack_package(
                    uri, self._resources_dir, logger=logger
                )

            return get_directory_size_bytes(module_dir)
예제 #4
0
 async def create(
     self,
     uri: str,
     runtime_env: dict,
     context: RuntimeEnvContext,
     logger: Optional[logging.Logger] = default_logger,
 ) -> int:
     local_dir = download_and_unpack_package(uri,
                                             self._resources_dir,
                                             logger=logger)
     return get_directory_size_bytes(local_dir)
예제 #5
0
    def setup(self,
              runtime_env: RuntimeEnv,
              context: RuntimeEnvContext,
              logger: Optional[logging.Logger] = default_logger):
        if not runtime_env.py_modules():
            return

        module_dirs = []
        for uri in runtime_env.py_modules():
            module_dir = download_and_unpack_package(
                uri, self._resources_dir, logger=logger)
            module_dirs.append(module_dir)

        # Insert the py_modules directories into the PYTHONPATH.
        python_path = os.pathsep.join(module_dirs)
        if "PYTHONPATH" in context.env_vars:
            python_path += os.pathsep + context.env_vars["PYTHONPATH"]
        context.env_vars["PYTHONPATH"] = python_path
예제 #6
0
    def setup(self,
              runtime_env: dict,
              context: RuntimeEnvContext,
              logger: Optional[logging.Logger] = default_logger):
        if not runtime_env.get("working_dir"):
            return

        working_dir = download_and_unpack_package(runtime_env["working_dir"],
                                                  self._resources_dir,
                                                  logger=logger)
        context.command_prefix += [f"cd {working_dir}"]

        # Insert the working_dir as the first entry in PYTHONPATH. This is
        # compatible with users providing their own PYTHONPATH in env_vars.
        python_path = working_dir
        if "PYTHONPATH" in context.env_vars:
            python_path += os.pathsep + context.env_vars["PYTHONPATH"]
        context.env_vars["PYTHONPATH"] = python_path
예제 #7
0
 def _create():
     local_dir = download_and_unpack_package(uri,
                                             self._resources_dir,
                                             logger=logger)
     return get_directory_size_bytes(local_dir)