Use runpy in install/uninstall, refs #928

This commit is contained in:
Simon Willison 2020-08-11 16:54:52 -07:00
commit afdeda8216
2 changed files with 19 additions and 20 deletions

View file

@ -9,6 +9,7 @@ import pathlib
import shutil
from subprocess import call
import sys
from runpy import run_module
from .app import Datasette, DEFAULT_CONFIG, CONFIG_OPTIONS, pm
from .utils import (
check_connection,
@ -235,12 +236,8 @@ def package(
@click.argument("packages", nargs=-1, required=True)
def install(packages):
"Install Python packages - e.g. Datasette plugins - into the same environment as Datasette"
from pip._internal.cli.main import main
try:
main(["install"] + list(packages))
except SystemExit as e:
pass
sys.argv = ["pip", "install"] + list(packages)
run_module("pip", run_name="__main__")
@cli.command()
@ -248,12 +245,8 @@ def install(packages):
@click.option("-y", "--yes", is_flag=True, help="Don't ask for confirmation")
def uninstall(packages, yes):
"Uninstall Python packages (e.g. plugins) from the Datasette environment"
from pip._internal.cli.main import main
try:
main(["uninstall"] + list(packages) + (["-y"] if yes else []))
except SystemExit as e:
pass
sys.argv = ["pip", "uninstall"] + list(packages) + (["-y"] if yes else [])
run_module("pip", run_name="__main__")
@cli.command()