code: def setenv(self, env=None, clean=True, silent=True, filename=None):
          
          env = env or self.ENV_FOR_DYNACONF
  
          if not isinstance(env, str):
              raise AttributeError("env should be a string")
          if "_" in env:
              raise AttributeError("env should not contains _")
  
          self.logger.debug("env switching to: %s", env)
  
          env = env.upper()
  
          if env != self.ENV_FOR_DYNACONF:
              self.loaded_envs.append(env)
          else:
              self.loaded_envs = []
  
          if clean:
              self.clean(env=env)
          self.execute_loaders(env=env, silent=silent, filename=filename)
docs: Used to interactively change the env
          Example of settings.toml::
  
              [development]
              message = 'This is in dev'
              [other]
              message = 'this is in other env'
  
          Program::
  
              >>> from dynaconf import settings
              >>> print settings.MESSAGE
              'This is in dev'
              >>> with settings.using_env('OTHER'):
              ...    print settings.MESSAGE
              'this is in other env'
  
          :param env: Upper case name of env without any _
          :param clean: If preloaded vars should be cleaned
          :param silent: Silence errors
          :param filename: Custom filename to load (optional)
          :return: context