class_docstr: Specifies the PyPI packages for all steps of the flow.
  
  Use `@pypi_base` to set common packages required by all
  steps and use `@pypi` to specify step-specific overrides.
  Parameters
  ----------
  packages : Dict[str, str], default: {}
      Packages to use for this flow. The key is the name of the package
      and the value is the version to use.
  python : str, optional
      Version of Python to use, e.g. '3.7.4'. A default value of None implies
      that the version used will correspond to the version of the Python interpreter used to start the run.
code: def flow_init(
      self,
      flow,
      graph,
      environment,
      flow_datastore,
      metadata,
      logger,
      echo,
      options,
  ):
      from metaflow import decorators
  
      decorators._attach_decorators(flow, ["pypi"])
  
      # @pypi uses a conda environment to create a virtual environment.
      # The conda environment can be created through micromamba.
      _supported_virtual_envs = ["conda"]
  
      # To placate people who don't want to see a shred of conda in UX, we symlink
      # --environment=pypi to --environment=conda
      _supported_virtual_envs.extend(["pypi"])
  
      # The --environment= requirement ensures that valid virtual environments are
      # created for every step to execute it, greatly simplifying the @conda
      # implementation.
      if environment.TYPE not in _supported_virtual_envs:
          raise InvalidEnvironmentException(
              "@%s decorator requires %s"
              % (
                  self.name,
                  " or ".join(
                      [
                          "--environment=%s" % env
                          for env in _supported_virtual_envs
                      ]
                  ),
              )
          )
  
file_path: metaflow/metaflow/plugins/pypi/pypi_decorator.py
imports: from metaflow.decorators import FlowDecorator, StepDecorator
  from metaflow.metaflow_environment import InvalidEnvironmentException
label_desc: Use image node_id 1 for calling the PyPIFlowDecorator obj's underlying member method code with example usage: obj.flow_init(flow, graph, environment, flow_datastore, metadata, logger, echo, options) without return types