<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:

def _set_directories(self):
        '''Initialize variables based on evidence about the directories.'''
        if self._dirs['initial'] == None:
            self._dirs['base'] = discover_base_dir(self._dirs['run'])  
        else:
            self._dirs['base'] = discover_base_dir(self._dirs['initial'])  
        # now, if 'base' is None (no base directory was found) then the only
        # allowed operation is init 
        self._update_dirs_on_base()
        # we might have set the directory variables fine, but the tree
        # might not exist yet. _tree_ready is a flag for that.
        self._tree_ready = verify_dir_structure(self._dirs['base'])
        if self._tree_ready:
            self._read_site_config()