code: def post_install_package():
      
  
      module_name = '.'.join([env.project_package_name,'deploy'])
      funcs_run = []
      try:
          imported = import_module(module_name)
          funcs = vars(imported)
          for f in env.installed_packages[env.host]:
              func = funcs.get(''.join(['post_install_',f.replace('.','_').replace('-','_')]))
              if func:
                  func()
                  funcs_run.append(func)
      except ImportError:
          pass
      
      #run per app
      for app in env.INSTALLED_APPS:
          if app == 'woven': continue
          module_name = '.'.join([app,'deploy'])
          try:
              imported = import_module(module_name)
              funcs = vars(imported)
              for f in env.installed_packages[env.host]:
                  func = funcs.get(''.join(['post_install_',f.replace('.','_').replace('-','_')]))
                  if func and func not in funcs_run:
                      func()
                      funcs_run.append(func)
          except ImportError:
              pass
      #run woven last
      import woven.deploy
      funcs = vars(woven.deploy)
      for f in env.installed_packages[env.host]:
          func = funcs.get(''.join(['post_install_',f.replace('.','_').replace('-','_')]))
          if func and func not in funcs_run: func()
docs: Run any functions post install a matching package.
      Hook functions are in the form post_install_[package name] and are
      defined in a deploy.py file
      
      Will be executed post install_packages and upload_etc