def setup_venv(self):
        """Setup virtualenv if necessary."""
        venv = self.opts.venv
        if not venv:
            venv = os.environ.get('CRONY_VENV')
            if not venv and self.config['crony']:
                venv = self.config['crony'].get('venv')
        if venv:
            if not venv.endswith('activate'):
                add_path = os.path.join('bin', 'activate')
                self.logger.debug(f'Venv directory given, adding {add_path}')
                venv = os.path.join(venv, add_path)
            self.logger.debug(f'Adding sourcing virtualenv {venv}')
            self.cmd = f'. {venv} && {self.cmd}'