**Apache Airflow version**: 2.0.0


**Kubernetes version (if you are using kubernetes)** (use `kubectl version`): v1.16.3

**Environment**:

- **Cloud provider or hardware configuration**:
- **OS** (e.g. from /etc/os-release): Debian GNU/Linux 10 (buster)
- **Kernel** (e.g. `uname -a`): Linux airflow 3.10.0-1127.10.1.el7.x86_64 #1 SMP Tue May 26 15:05:43 EDT 2020 x86_64 GNU/Linux
- **Install tools**:
- **Others**:

**What happened**:

ExternalTaskSensor with check_existence=True referencing an external DAG inside a .zip file raises the following exception:
```
ERROR - The external DAG dag_a /opt/airflow-data/dags/my_dags.zip/dag_a.py was deleted.
Traceback (most recent call last):
  File "/home/airflow/.local/lib/python3.7/site-packages/airflow/models/taskinstance.py", line 1086, in _run_raw_task
    self._prepare_and_execute_task_with_callbacks(context, task)
  File "/home/airflow/.local/lib/python3.7/site-packages/airflow/models/taskinstance.py", line 1260, in _prepare_and_execute_task_with_callbacks
    result = self._execute_task(context, task_copy)
  File "/home/airflow/.local/lib/python3.7/site-packages/airflow/models/taskinstance.py", line 1300, in _execute_task
    result = task_copy.execute(context=context)
  File "/home/airflow/.local/lib/python3.7/site-packages/airflow/sensors/base.py", line 228, in execute
    while not self.poke(context):
  File "/home/airflow/.local/lib/python3.7/site-packages/airflow/utils/session.py", line 65, in wrapper
    return func(*args, session=session, **kwargs)
  File "/home/airflow/.local/lib/python3.7/site-packages/airflow/sensors/external_task.py", line 159, in poke
    self._check_for_existence(session=session)
  File "/home/airflow/.local/lib/python3.7/site-packages/airflow/sensors/external_task.py", line 184, in _check_for_existence
    raise AirflowException(f'The external DAG {self.external_dag_id} was deleted.')
airflow.exceptions.AirflowException: The external DAG dag_a /opt/airflow-data/dags/my_dags.zip/dag_a.py was deleted.
```

**What you expected to happen**:

The existence check should PASS.

**How to reproduce it**:

1. Create a file *dag_a.py* with the following contents:
```
from airflow import DAG
from airflow.operators.dummy import DummyOperator
from airflow.utils.timezone import datetime

DEFAULT_DATE = datetime(2015, 1, 1)
with DAG("dag_a", start_date=DEFAULT_DATE, schedule_interval="@daily") as dag:
    task_a = DummyOperator(task_id="task_a", dag=dag)
```

2. Create a file *dag_b.py* with contents:
```
from airflow import DAG
from airflow.operators.dummy import DummyOperator
from airflow.sensors.external_task import ExternalTaskSensor
from airflow.utils.timezone import datetime

DEFAULT_DATE = datetime(2015, 1, 1)

with DAG("dag_b", start_date=DEFAULT_DATE, schedule_interval="@daily") as dag:
    sense_a = ExternalTaskSensor(
        task_id="sense_a",
        external_dag_id="dag_a",
        external_task_id="task_a",
        check_existence=True
    )
    task_b = DummyOperator(task_id="task_b", dag=dag)
    sense_a >> task_b
```

3. `zip my_dags.zip dag_a.py dag_b.py`
4. Load *my_dags.zip* into airflow and run *dag_b*
5. Task *sense_a* will fail with exception above.

**Anything else we need to know**:



ti = TaskInstance(task=operator, execution_date=dttm)
        operator.render_template_fields(ti.get_template_context())
        query = {"dag_id": operator.external_dag_id, "execution_date": dttm.isoformat()}
        return build_airflow_url_with_query(query)
class ExternalTaskSensor(BaseSensorOperator):
    """
    Waits for a different DAG, a task group, or a task in a different DAG to complete for a
    specific logical date.
    If both `external_task_group_id` and `external_task_id` are ``None`` (default), the sensor
    waits for the DAG.
    Values for `external_task_group_id` and `external_task_id` can't be set at the same time.
    By default the ExternalTaskSensor will wait for the external task to
    succeed, at which point it will also succeed. However, by default it will
    *not* fail if the external task fails, but will continue to check the status
    until the sensor times out (thus giving you time to retry the external task
    without also having to clear the sensor).
    It is possible to alter the default behavior by setting states which
    cause the sensor to fail, e.g. by setting ``allowed_states=[State.FAILED]``
    and ``failed_states=[State.SUCCESS]`` you will flip the behaviour to get a
    sensor which goes green when the external task *fails* and immediately goes
    red if the external task *succeeds*!
    Note that ``soft_fail`` is respected when examining the failed_states. Thus
    if the external task enters a failed state and ``soft_fail == True`` the
    sensor will _skip_ rather than fail. As a result, setting ``soft_fail=True``
    and ``failed_states=[State.SKIPPED]`` will result in the sensor skipping if