code: function injectAllRequirements(funcArtifact) {
    if (this.options.layer) {
      // The requirements will be placed in a Layer, so just resolve
      return BbPromise.resolve();
    }
  
    this.serverless.cli.log('Injecting required Python packages to package...');
  
    if (this.serverless.service.package.individually) {
      return BbPromise.resolve(this.targetFuncs)
        .filter(func =>
          (func.runtime || this.serverless.service.provider.runtime).match(
            /^python.*/
          )
        )
        .map(func => {
          if (!get(func, 'module')) {
            set(func, ['module'], '.');
          }
          return func;
        })
        .map(func => {
          if (func.module !== '.') {
            const artifact = func.package ? func.package.artifact : funcArtifact;
            const newArtifact = path.join(
              '.serverless',
              `${func.module}-${func.name}.zip`
            );
            func.package.artifact = newArtifact;
            return moveModuleUp(artifact, newArtifact, func.module).then(
              () => func
            );
          } else {
            return func;
          }
        })
        .map(func => {
          return this.options.zip
            ? func
            : injectRequirements(
                path.join('.serverless', func.module, 'requirements'),
                func.package.artifact,
                this.options
              );
        });
    } else if (!this.options.zip) {
      return injectRequirements(
        path.join('.serverless', 'requirements'),
        this.serverless.service.package.artifact || funcArtifact,
        this.options
      );
    }
  }
docs: Inject requirements into packaged application.
  @return {Promise} the combined promise for requirements injection.