pip/tools/protected_pip.py

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

39 lines
1.1 KiB
Python
Raw Permalink Normal View History

import os
import pathlib
import shutil
import subprocess
import sys
from glob import glob
from typing import Iterable, Union
VIRTUAL_ENV = os.environ["VIRTUAL_ENV"]
TOX_PIP_DIR = os.path.join(VIRTUAL_ENV, "pip")
def pip(args: Iterable[Union[str, pathlib.Path]]) -> None:
# First things first, get a recent (stable) version of pip.
if not os.path.exists(TOX_PIP_DIR):
subprocess.check_call(
[
sys.executable,
"-m",
"pip",
"--disable-pip-version-check",
"install",
"-t",
TOX_PIP_DIR,
"pip",
]
)
shutil.rmtree(glob(os.path.join(TOX_PIP_DIR, "pip-*.dist-info"))[0])
# And use that version.
pypath_env = os.environ.get("PYTHONPATH")
pypath = pypath_env.split(os.pathsep) if pypath_env is not None else []
pypath.insert(0, TOX_PIP_DIR)
os.environ["PYTHONPATH"] = os.pathsep.join(pypath)
subprocess.check_call([sys.executable, "-m", "pip", *(os.fspath(a) for a in args)])
if __name__ == "__main__":
pip(sys.argv[1:])