**Apache Airflow version**

13faa6912f7cd927737a1dc15630d3bbaf2f5d4d

**Environment**

- **Configuration**: Local Executor
- **OS** (e.g. from /etc/os-release): Mac OS 11.3
- **Kernel**: Darwin Kernel Version 20.4.0
- **Install tools**: `pip install -e .`

**The DAG**

```python
def callable():
    print("hi")

with DAG(dag_id="two_virtualenv") as dag:

    a = PythonOperator(
        task_id="a",
        python_callable=callable,
    )

    # b = PythonOperator(          # works
    b = PythonVirtualenvOperator(  # doesn't work
        task_id="b",
        python_callable=callable,
    )

    a >> b
```

**What happened**:
Failure somewhere between first task and second:
```
INFO - Marking task as SUCCESS. dag_id=two_virtualenv, task_id=a
ERROR - Failed to execute task: cannot pickle 'module' object.
Traceback (most recent call last):
  File "/Users/matt/src/airflow/airflow/executors/debug_executor.py", line 79, in _run_task
    ti._run_raw_task(job_id=ti.job_id, **params)  # pylint: disable=protected-access
  File "/Users/matt/src/airflow/airflow/utils/session.py", line 70, in wrapper
    return func(*args, session=session, **kwargs)
  File "/Users/matt/src/airflow/airflow/models/taskinstance.py", line 1201, in _run_raw_task
    self._run_mini_scheduler_on_child_tasks(session)
  File "/Users/matt/src/airflow/airflow/utils/session.py", line 67, in wrapper
    return func(*args, **kwargs)
  File "/Users/matt/src/airflow/airflow/models/taskinstance.py", line 1223, in _run_mini_scheduler_on_child_tasks
    partial_dag = self.task.dag.partial_subset(
  File "/Users/matt/src/airflow/airflow/models/dag.py", line 1490, in partial_subset
    dag.task_dict = {
  File "/Users/matt/src/airflow/airflow/models/dag.py", line 1491, in <dictcomp>
    t.task_id: copy.deepcopy(t, {id(t.dag): dag})  # type: ignore
  File "/usr/local/Cellar/python@3.9/3.9.4/Frameworks/Python.framework/Versions/3.9/lib/python3.9/copy.py", line 153, in deepcopy
    y = copier(memo)
  File "/Users/matt/src/airflow/airflow/models/baseoperator.py", line 961, in __deepcopy__
    setattr(result, k, copy.deepcopy(v, memo))  # noqa
  File "/usr/local/Cellar/python@3.9/3.9.4/Frameworks/Python.framework/Versions/3.9/lib/python3.9/copy.py", line 161, in deepcopy
    rv = reductor(4)
TypeError: cannot pickle 'module' object
ERROR - Task instance <TaskInstance: two_virtualenv.a 2021-05-11 00:00:00+00:00 [failed]> failed
```

**What you expected to happen**:

Both tasks say "hi" and succeed

**To Replicate**

The DAG and output above are shortened for brevity.  A more complete story: https://gist.github.com/MatrixManAtYrService/6b27378776470491eb20b60e01cfb675

Ran it like this:
```
 $ airflow dags test two_virtualenv $(date "+%Y-%m-%d")
```
airflow/models/dag.py
Dict,
    FrozenSet,
    Iterable,
    List,
    Optional,
    Set,
    Tuple,
    Type,
    Union,
    cast,
)
import jinja2
import pendulum
from croniter import croniter
from dateutil.relativedelta import relativedelta
from jinja2.nativetypes import NativeEnvironment
from sqlalchemy import Boolean, Column, ForeignKey, Index, Integer, String, Text, func, or_
from sqlalchemy.orm import backref, joinedload, relationship
from sqlalchemy.orm.session import Session
from airflow import settings, utils
from airflow.configuration import conf
from airflow.exceptions import AirflowException, DuplicateTaskIdFound, TaskNotFound
from airflow.models.base import ID_LEN, Base
from airflow.models.baseoperator import BaseOperator
from airflow.models.dagbag import DagBag
from airflow.models.dagcode import DagCode
from airflow.models.dagparam import DagParam
from airflow.models.dagpickle import DagPickle
from airflow.models.dagrun import DagRun
from airflow.models.taskinstance import Context, TaskInstance, clear_task_instances