<!--
Welcome to Apache Airflow!

Please complete the next sections or the issue will be closed.
-->

**Apache Airflow version**: 2.1.2

<!-- AIRFLOW VERSION IS MANDATORY -->

**OS**: CentOS Linux release 8.2.2004 (Core)

<!-- MANDATORY! You can get it via `cat /etc/oss-release` for example -->

**Apache Airflow Provider versions**: 
apache-airflow-providers-celery==2.0.0
apache-airflow-providers-ftp==2.0.0
apache-airflow-providers-http==2.0.0
apache-airflow-providers-imap==2.0.0
apache-airflow-providers-mysql==2.1.0
apache-airflow-providers-redis==2.0.0
apache-airflow-providers-sftp==2.1.0
apache-airflow-providers-sqlite==2.0.0
apache-airflow-providers-ssh==2.1.0

<!-- You can use `pip freeze | grep apache-airflow-providers` (you can leave only relevant ones)-->

**Deployment**: Virtualenv  3.7.5

<!-- e.g. Virtualenv / VM / Docker-compose / K8S / Helm Chart / Managed Airflow Service -->

<!-- Please include your deployment tools and versions: docker-compose, k8s, helm, etc -->

**What happened**:
Got error when I try to start a webserver:
```bash
$ $VENV_PATH/bin/airflow webserver
...
=================================================================
Traceback (most recent call last):
  File "/VENV_PATH/bin/airflow", line 8, in <module>
    sys.exit(main())
  File "/VENV_PATH/lib/python3.7/site-packages/airflow/__main__.py", line 40, in main
    args.func(args)
  File "/VENV_PATH/lib/python3.7/site-packages/airflow/cli/cli_parser.py", line 48, in command
    return func(*args, **kwargs)
  File "/VENV_PATH/lib/python3.7/site-packages/airflow/utils/cli.py", line 91, in wrapper
    return f(*args, **kwargs)
  File "/VENV_PATH/lib/python3.7/site-packages/airflow/cli/commands/webserver_command.py", line 483, in webserver
    with subprocess.Popen(run_args, close_fds=True) as gunicorn_master_proc:
  File "/home/user/.pyenv/versions/3.7.5/lib/python3.7/subprocess.py", line 800, in __init__
    restore_signals, start_new_session)
  File "/home/user/.pyenv/versions/3.7.5/lib/python3.7/subprocess.py", line 1551, in _execute_child
    raise child_exception_type(errno_num, err_msg, err_filename)
FileNotFoundError: [Errno 2] No such file or directory: 'gunicorn': 'gunicorn'
[user@xxxxx xxxxxxxxxx]$ /VENV_PATH/bin/python
Python 3.7.5 (default, Aug 20 2021, 17:16:24)
```

<!-- Please include exact error messages if you can -->

**What you expected to happen**:
Airflow start webserver success

<!-- What do you think went wrong? -->

**How to reproduce it**:
assume we already have `AIRFLOW_HOME`
1. create a venv: `virtualenv xxx`
2. `xxx/bin/pip install apache-airflow`
3. `xxx/bin/airflow webserver`

<!--
As minimally and precisely as possible. Keep in mind we do not have access to your cluster or dags.
If this is a UI bug, please provide a screenshot of the bug or a link to a youtube video of the bug in action
You can include images/screen-casts etc. by drag-dropping the image here.
-->

**Anything else we need to know**:
`cli/commands/webserver_command.py:394` use `gunicorn` as subprocess command, assume it's in PATH.
`airflow webserver` runs well after `export PATH=$PATH:$VENV_PATH/bin`.

<!--
How often does this problem occur? Once? Every time etc?
Any relevant logs to include? Put them here inside fenced
``` ``` blocks or inside a foldable details tag if it's long:
<details><summary>x.log</summary> lots of stuff </details>
-->

**Are you willing to submit a PR?**
I'm not good at python so maybe it's not a good idea for me to submit a PR.

<!---
This is absolutely not required, but we are happy to guide you in contribution process
especially if you already have a good understanding of how to implement the fix.
Airflow is a community-managed project and we love to bring new contributors in.
Find us in #airflow-how-to-pr on Slack!
 -->

airflow/cli/commands/webserver_command.py
num_new_workers,
                )
                self._spawn_new_workers(num_new_workers)
                self._last_refresh_time = time.monotonic()
                return
        # if we should check the directory with the plugin,
        if self.reload_on_plugin_change:
            # compare the previous and current contents of the directory
            new_state = self._generate_plugin_state()
            # If changed, wait until its content is fully saved.
            if new_state != self._last_plugin_state:
                self.log.debug(
                     restarted the next time the '
                    'plugin director
                    num_ready_workers_running,
                    
                )
                self._restart_on_next_plugin_check = True
                self._last_plugin_state = new_state
            elif self._restart_on_next_plugin_check:
                self.log.debug(
                    '[%d / %d] Starts reloading the gunicorn configuration.',
                    num_ready_workers_running,
                    
                )
                self._restart_on_next_plugin_check = False
                self._last_refresh_time = time.monotonic()
                self._reload_gunicorn()
@cli_utils.action_logging
def webserver(args):