code: def install(packages, upgrade, requirement, editable):
      """Install plugins and packages from PyPI into the same environment as Datasette"""
      if not packages and not requirement and not editable:
          raise click.UsageError(
              "Please specify at least one package to install"
          )
      args = ["pip", "install"]
      if upgrade:
          args += ["--upgrade"]
      if editable:
          args += ["--editable", editable]
      if requirement:
          args += ["-r", requirement]
      args += list(packages)
      sys.argv = args
      run_module("pip", run_name="__main__")
  
imports: import asyncio
  import uvicorn
  import click
  from click import formatting
  from click.types import CompositeParamType
  from click_default_group import DefaultGroup
  import functools
  import json
  import os
  import pathlib
  from runpy import run_module
  import shutil
  from subprocess import call
  import sys
  import textwrap
  import webbrowser
  from .app import OBSOLETE_SETTINGS, Datasette, DEFAULT_SETTINGS, SETTINGS, SQLITE_LIMIT_ATTACHED, pm
  from .utils import LoadExtension, StartupError, check_connection, find_spatialite, parse_metadata, ConnectionProblem, SpatialiteConnectionProblem, initial_path_for_datasette, pairs_to_nested_config, temporary_docker_directory, fail_if_plugins_in_metadata, value_as_boolean, SpatialiteNotFound, StaticMount, ValueAsBooleanError
  from .utils.sqlite import sqlite3
  from .utils.testing import TestClient
  from .version import __version__
label_desc: Use image node_id 7 for calling a global function with example usage: install(packages, upgrade, requirement, editable) without return types