code: def build_packages(self):
      for package in self.packages:
          # Get list of (package, module, module_file) tuples based on
          # scanning the package directory.  'package' is only included
          # in the tuple so that 'find_modules()' and
          # 'find_package_tuples()' have a consistent interface; it's
          # ignored here (apart from a sanity check).  Also, 'module' is
          # the *unqualified* module name (ie. no dots, no package -- we
          # already know its package!), and 'module_file' is the path to
          # the .py file, relative to the current directory
          # (ie. including 'package_dir').
          package_dir = self.get_package_dir(package)
          modules = self.find_package_modules(package, package_dir)
  
          # Now loop over the modules we found, "building" each one (just
          # copy it to self.build_lib).
          for package_, module, module_file in modules:
              assert package == package_
              self.build_module(module, module_file, package)
  
imports: import os
  import importlib.util
  import sys
  import glob
  from ..core import Command
  from ..errors import DistutilsOptionError, DistutilsFileError
  from ..util import convert_path
  from distutils._log import log
label_desc: Use image node_id 18 for calling the build_py obj's underlying member method code with example usage: obj.build_packages() without return types