datasette install -r requirements.txt, closes #2033

This commit is contained in:
Simon Willison 2023-03-06 14:27:30 -08:00
commit 1ad92a1d87
4 changed files with 44 additions and 6 deletions

View file

@ -340,15 +340,25 @@ def package(
@cli.command()
@click.argument("packages", nargs=-1, required=True)
@click.argument("packages", nargs=-1)
@click.option(
"-U", "--upgrade", is_flag=True, help="Upgrade packages to latest version"
)
def install(packages, upgrade):
@click.option(
"-r",
"--requirement",
type=click.Path(exists=True),
help="Install from requirements file",
)
def install(packages, upgrade, requirement):
"""Install plugins and packages from PyPI into the same environment as Datasette"""
if not packages and not requirement:
raise click.UsageError("Please specify at least one package to install")
args = ["pip", "install"]
if upgrade:
args += ["--upgrade"]
if requirement:
args += ["-r", requirement]
args += list(packages)
sys.argv = args
run_module("pip", run_name="__main__")