Beispiel #1
0
    def install(self,
                requirements: Iterable[str],
                shared: bool = False) -> None:
        missing = self.check_requirements(requirements)
        if not missing:
            return
        path = self._prefix.shared if shared else self._prefix.overlay

        with tempfile.NamedTemporaryFile("w+",
                                         prefix="pdm-build-reqs-",
                                         suffix=".txt",
                                         delete=False) as req_file:
            req_file.write(os.linesep.join(missing))
            req_file.close()
            cmd = self._env.pip_command + [
                "install",
                "--ignore-installed",
                "--prefix",
                path,
            ]
            cmd.extend(prepare_pip_source_args(self._env.project.sources))
            cmd.extend(["-r", req_file.name])
            self.subprocess_runner(cmd, isolated=False)
            os.unlink(req_file.name)

        if shared:
            # The shared env is prepared and is safe to be cached now. This is to make
            # sure no broken env is returned when run in parallel mode.
            key = hash(frozenset(requirements))
            if key not in self._shared_envs:
                self._shared_envs[key] = path
Beispiel #2
0
    def install(self, requirements: Iterable[str]) -> None:
        missing = self.check_requirements(requirements)
        if not missing:
            return

        with tempfile.NamedTemporaryFile(
            "w+", prefix="pdm-build-reqs-", suffix=".txt", delete=False
        ) as req_file:
            req_file.write(os.linesep.join(missing))
            req_file.close()
            cmd = self._env.pip_command + [
                "install",
                "--ignore-installed",
                "--prefix",
                self._path,
            ]
            cmd.extend(prepare_pip_source_args(self._env.project.sources))
            cmd.extend(["-r", req_file.name])
            self.subprocess_runner(cmd, isolated=False)
            os.unlink(req_file.name)
Beispiel #3
0
def test_prepare_pip_source_args(sources, pip_args, expected):
    assert utils.prepare_pip_source_args(sources, pip_args) == expected