Tipragot
628be439b8
Cela permet de ne pas avoir de problèmes de compatibilité car python est dans le git.
51 lines
1.4 KiB
Python
51 lines
1.4 KiB
Python
"""Execute exactly this copy of pip, within a different environment.
|
|
|
|
This file is named as it is, to ensure that this module can't be imported via
|
|
an import statement.
|
|
"""
|
|
|
|
# /!\ This version compatibility check section must be Python 2 compatible. /!\
|
|
|
|
import sys
|
|
|
|
# Copied from setup.py
|
|
PYTHON_REQUIRES = (3, 7)
|
|
|
|
|
|
def version_str(version): # type: ignore
|
|
return ".".join(str(v) for v in version)
|
|
|
|
|
|
if sys.version_info[:2] < PYTHON_REQUIRES:
|
|
raise SystemExit(
|
|
"This version of pip does not support python {} (requires >={}).".format(
|
|
version_str(sys.version_info[:2]), version_str(PYTHON_REQUIRES)
|
|
)
|
|
)
|
|
|
|
# From here on, we can use Python 3 features, but the syntax must remain
|
|
# Python 2 compatible.
|
|
|
|
import runpy # noqa: E402
|
|
from importlib.machinery import PathFinder # noqa: E402
|
|
from os.path import dirname # noqa: E402
|
|
|
|
PIP_SOURCES_ROOT = dirname(dirname(__file__))
|
|
|
|
|
|
class PipImportRedirectingFinder:
|
|
@classmethod
|
|
def find_spec(self, fullname, path=None, target=None): # type: ignore
|
|
if fullname != "pip":
|
|
return None
|
|
|
|
spec = PathFinder.find_spec(fullname, [PIP_SOURCES_ROOT], target)
|
|
assert spec, (PIP_SOURCES_ROOT, fullname)
|
|
return spec
|
|
|
|
|
|
sys.meta_path.insert(0, PipImportRedirectingFinder())
|
|
|
|
assert __name__ == "__main__", "Cannot run __pip-runner__.py as a non-main module"
|
|
runpy.run_module("pip", run_name="__main__", alter_sys=True)
|