Yiyuan's picture
Upload 98 files
96a9519 verified
raw
history blame
1.23 kB
import importlib
import importlib.util
import os
import subprocess
import sys
from typing import Dict, Optional
from packaging.version import Version
python = sys.executable
index_url = os.environ.get("INDEX_URL", "")
def version(package: str) -> Optional[Version]:
try:
return Version(importlib.import_module(package).__version__)
except ModuleNotFoundError:
return None
def is_installed(package: str) -> bool:
try:
spec = importlib.util.find_spec(package)
except ModuleNotFoundError:
return False
return spec is not None
def run_python(command: str, env: Dict[str, str] = None) -> str:
run_kwargs = {
"args": f"\"{python}\" {command}",
"shell": True,
"env": os.environ if env is None else env,
"encoding": "utf8",
"errors": "ignore",
}
print(run_kwargs["args"])
result = subprocess.run(**run_kwargs)
if result.returncode != 0:
print(f"Error running command: {command}", file=sys.stderr)
raise RuntimeError(f"Error running command: {command}")
return result.stdout or ""
def run_pip(command: str, env: Dict[str, str] = None) -> str:
return run_python(f"-m pip {command}", env)