We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
Google Imports are Tied Together
## Description
*A clear description of the bug*
I’m using the new `GCSResult` and I’m getting an import error when I don’t also specify `google-cloud-bigquery` as a dependency since they’re imports occur in the same file, I think?

```
Unexpected error: ImportError("cannot import name 'bigquery' from 'google.cloud' (unknown location)")
Traceback (most recent call last):
  File "/usr/local/lib/python3.7/site-packages/prefect/engine/runner.py", line 48, in inner
    new_state = method(self, state, *args, **kwargs)
  File "/usr/local/lib/python3.7/site-packages/prefect/engine/task_runner.py", line 986, in get_task_run_state
    result = self.result.write(value, filename="output", **prefect.context)
  File "/usr/local/lib/python3.7/site-packages/prefect/engine/results/gcs_result.py", line 73, in write
    self.gcs_bucket.blob(new.location).upload_from_string(binary_data)
  File "/usr/local/lib/python3.7/site-packages/prefect/engine/results/gcs_result.py", line 35, in gcs_bucket
    from prefect.utilities.gcp import get_storage_client
  File "/usr/local/lib/python3.7/site-packages/prefect/utilities/gcp.py", line 6, in <module>
    from google.cloud import bigquery, storage
ImportError: cannot import name 'bigquery' from 'google.cloud' (unknown location)
```
https://cloud.prefect.io/prefect/flow-run/6704aa4e-ba9b-40ed-a4f8-386920839a8e?logId=75b1fc01-0ee8-4061-ab8b-5481e6123a79

On a cool note, changing to `python_dependencies=["prefect[google]"]` did work 🎉 

## Expected Behavior
*What did you expect to happen instead?*
I'd like to be able to specify one import in insolation (in this case `google-cloud-storage`) 


## Reproduction
*A minimal example that exhibits the behavior.*
```
from prefect import task, Flow
from prefect.tasks.notifications.slack_task import SlackTask
from prefect.schedules import CronSchedule
from prefect.environments.storage import Docker
from prefect.engine.results import GCSResult

import pendulum
import datetime


@task(name="Get Week Message", max_retries=5, retry_delay=datetime.timedelta(seconds=5))
def get_week_message():
    prefects_birthday = pendulum.date(2018, 1, 17)
    current_week = prefects_birthday.diff(pendulum.now()).in_weeks()
    return f"Hello, Jeremiah! It is week {current_week}."


send_message = SlackTask(
    name="Slack Jeremiah",
    max_retries=5,
    retry_delay=datetime.timedelta(seconds=5),
    webhook_secret="SLACK_WEBHOOK",
)

schedule = CronSchedule(cron="50 11 * * MON", start_date=pendulum.now(tz="US/Eastern"))

storage = Docker(
    base_image="prefecthq/prefect:latest-python3.7",
    registry_url=URL,
    python_dependencies=["google-cloud-storage"],
    files={
        FILE_LOCATION: FILENAME
    },
    env_vars={"GOOGLE_APPLICATION_CREDENTIALS": FILENAME},
)

gcs_result = GCSResult(bucket="what_week_is_it_results")

with Flow(
    name="What Week is It?", schedule=schedule, storage=storage, result=gcs_result
) as flow:
    week_message = get_week_message()
    result = send_message(message=week_message)
```



## Environment
*Any additional information about your environment*


*Optionally run `prefect diagnostics` from the command line and paste the information here*
```
{
  "config_overrides": {
    "cloud": {
      "auth_token": true,
      "use_local_secrets": true
    },
    "context": {
      "secrets": false
    },
    "home_dir": true
  },
  "env_vars": [],
  "system_information": {
    "platform": "Darwin-19.4.0-x86_64-i386-64bit",
    "prefect_version": "0.11.2",
    "python_version": "3.7.7"
  }
}
```

--- END ISSUE ---

Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
--- BEGIN FILES ---
Path: `src/prefect/utilities/gcp.py`
Content:
```
1 """
2 Utility functions for interacting with Google Cloud.
3 """
4 import prefect
5 
6 from google.cloud import bigquery, storage
7 from google.oauth2.service_account import Credentials
8 
9 
10 def get_google_client(submodule, credentials: dict = None, project: str = None):
11     """
12     Utility function for loading Google Client objects from a given set of credentials.
13 
14     Args:
15         - submodule: a Python submodule with a Client attribute
16         - credentials (dict, optional): a dictionary of Google credentials used to initialize the Client; if
17             not provided, will attempt to load the Client using ambient environment settings
18         - project (str, optional): the Google project to point the Client to; if not provided, Client defaults
19             will be used
20 
21     Returns:
22         - Client: an initialized and authenticated Google Client
23     """
24     Client = getattr(submodule, "Client")
25     credentials = credentials or prefect.context.get("secrets", {}).get(
26         "GCP_CREDENTIALS"
27     )
28     if credentials is not None:
29         credentials = Credentials.from_service_account_info(credentials)
30         project = project or credentials.project_id
31         client = Client(project=project, credentials=credentials)
32     else:
33         client = Client(project=project)
34     return client
35 
36 
37 def get_storage_client(credentials: dict = None, project: str = None):
38     """
39     Utility function for instantiating a Google Storage Client from a given set of credentials.
40 
41     Args:
42         - credentials (dict, optional): a dictionary of Google credentials used to initialize the Client; if
43             not provided, will attempt to load the Client using ambient environment settings
44         - project (str, optional): the Google project to point the Client to; if not provided, Client defaults
45             will be used
46 
47     Returns:
48         - Client: an initialized and authenticated Google Client
49     """
50     return get_google_client(storage, credentials=credentials, project=project)
51 
52 
53 def get_bigquery_client(credentials: dict = None, project: str = None):
54     """
55     Utility function for instantiating a Google BigQuery Client from a given set of credentials.
56 
57     Args:
58         - credentials (dict, optional): a dictionary of Google credentials used to initialize the Client; if
59             not provided, will attempt to load the Client using ambient environment settings
60         - project (str, optional): the Google project to point the Client to; if not provided, Client defaults
61             will be used
62 
63     Returns:
64         - Client: an initialized and authenticated Google Client
65     """
66     return get_google_client(bigquery, credentials=credentials, project=project)
67
```
--- END FILES ---

Please first localize the bug based on the issue statement, and then generate a patch according to the `git diff` format fenced by three backticks.

Here is an example:

```diff
diff --git a/examples/server_async.py b/examples/server_async.py
--- a/examples/server_async.py
+++ b/examples/server_async.py
@@ -313,4 +313,4 @@
 
 
 if __name__ == "__main__":
-    asyncio.run(run_async_server("."), debug=True)
+    asyncio.run(run_async_server(), debug=True)
diff --git a/examples/server_sync.py b/examples/server_sync.py
--- a/examples/server_sync.py
+++ b/examples/server_sync.py
@@ -313,5 +313,5 @@
 
 
 if __name__ == "__main__":
-    server = run_sync_server(".")
+    server = run_sync_server()
     server.shutdown()

```

diff --git a/src/prefect/utilities/gcp.py b/src/prefect/utilities/gcp.py
--- a/src/prefect/utilities/gcp.py
+++ b/src/prefect/utilities/gcp.py
@@ -3,7 +3,6 @@
 """
 import prefect
 
-from google.cloud import bigquery, storage
 from google.oauth2.service_account import Credentials
 
 
@@ -47,6 +46,8 @@
     Returns:
         - Client: an initialized and authenticated Google Client
     """
+    from google.cloud import storage
+
     return get_google_client(storage, credentials=credentials, project=project)
 
 
@@ -63,4 +64,6 @@
     Returns:
         - Client: an initialized and authenticated Google Client
     """
+    from google.cloud import bigquery
+
     return get_google_client(bigquery, credentials=credentials, project=project)

{"golden_diff": "diff --git a/src/prefect/utilities/gcp.py b/src/prefect/utilities/gcp.py\n--- a/src/prefect/utilities/gcp.py\n+++ b/src/prefect/utilities/gcp.py\n@@ -3,7 +3,6 @@\n \"\"\"\n import prefect\n \n-from google.cloud import bigquery, storage\n from google.oauth2.service_account import Credentials\n \n \n@@ -47,6 +46,8 @@\n     Returns:\n         - Client: an initialized and authenticated Google Client\n     \"\"\"\n+    from google.cloud import storage\n+\n     return get_google_client(storage, credentials=credentials, project=project)\n \n \n@@ -63,4 +64,6 @@\n     Returns:\n         - Client: an initialized and authenticated Google Client\n     \"\"\"\n+    from google.cloud import bigquery\n+\n     return get_google_client(bigquery, credentials=credentials, project=project)\n", "issue": "Google Imports are Tied Together\n## Description\r\n*A clear description of the bug*\r\nI\u2019m using the new `GCSResult` and I\u2019m getting an import error when I don\u2019t also specify `google-cloud-bigquery` as a dependency since they\u2019re imports occur in the same file, I think?\r\n\r\n```\r\nUnexpected error: ImportError(\"cannot import name 'bigquery' from 'google.cloud' (unknown location)\")\r\nTraceback (most recent call last):\r\n  File \"/usr/local/lib/python3.7/site-packages/prefect/engine/runner.py\", line 48, in inner\r\n    new_state = method(self, state, *args, **kwargs)\r\n  File \"/usr/local/lib/python3.7/site-packages/prefect/engine/task_runner.py\", line 986, in get_task_run_state\r\n    result = self.result.write(value, filename=\"output\", **prefect.context)\r\n  File \"/usr/local/lib/python3.7/site-packages/prefect/engine/results/gcs_result.py\", line 73, in write\r\n    self.gcs_bucket.blob(new.location).upload_from_string(binary_data)\r\n  File \"/usr/local/lib/python3.7/site-packages/prefect/engine/results/gcs_result.py\", line 35, in gcs_bucket\r\n    from prefect.utilities.gcp import get_storage_client\r\n  File \"/usr/local/lib/python3.7/site-packages/prefect/utilities/gcp.py\", line 6, in <module>\r\n    from google.cloud import bigquery, storage\r\nImportError: cannot import name 'bigquery' from 'google.cloud' (unknown location)\r\n```\r\nhttps://cloud.prefect.io/prefect/flow-run/6704aa4e-ba9b-40ed-a4f8-386920839a8e?logId=75b1fc01-0ee8-4061-ab8b-5481e6123a79\r\n\r\nOn a cool note, changing to `python_dependencies=[\"prefect[google]\"]` did work \ud83c\udf89 \r\n\r\n## Expected Behavior\r\n*What did you expect to happen instead?*\r\nI'd like to be able to specify one import in insolation (in this case `google-cloud-storage`) \r\n\r\n\r\n## Reproduction\r\n*A minimal example that exhibits the behavior.*\r\n```\r\nfrom prefect import task, Flow\r\nfrom prefect.tasks.notifications.slack_task import SlackTask\r\nfrom prefect.schedules import CronSchedule\r\nfrom prefect.environments.storage import Docker\r\nfrom prefect.engine.results import GCSResult\r\n\r\nimport pendulum\r\nimport datetime\r\n\r\n\r\n@task(name=\"Get Week Message\", max_retries=5, retry_delay=datetime.timedelta(seconds=5))\r\ndef get_week_message():\r\n    prefects_birthday = pendulum.date(2018, 1, 17)\r\n    current_week = prefects_birthday.diff(pendulum.now()).in_weeks()\r\n    return f\"Hello, Jeremiah! It is week {current_week}.\"\r\n\r\n\r\nsend_message = SlackTask(\r\n    name=\"Slack Jeremiah\",\r\n    max_retries=5,\r\n    retry_delay=datetime.timedelta(seconds=5),\r\n    webhook_secret=\"SLACK_WEBHOOK\",\r\n)\r\n\r\nschedule = CronSchedule(cron=\"50 11 * * MON\", start_date=pendulum.now(tz=\"US/Eastern\"))\r\n\r\nstorage = Docker(\r\n    base_image=\"prefecthq/prefect:latest-python3.7\",\r\n    registry_url=URL,\r\n    python_dependencies=[\"google-cloud-storage\"],\r\n    files={\r\n        FILE_LOCATION: FILENAME\r\n    },\r\n    env_vars={\"GOOGLE_APPLICATION_CREDENTIALS\": FILENAME},\r\n)\r\n\r\ngcs_result = GCSResult(bucket=\"what_week_is_it_results\")\r\n\r\nwith Flow(\r\n    name=\"What Week is It?\", schedule=schedule, storage=storage, result=gcs_result\r\n) as flow:\r\n    week_message = get_week_message()\r\n    result = send_message(message=week_message)\r\n```\r\n\r\n\r\n\r\n## Environment\r\n*Any additional information about your environment*\r\n\r\n\r\n*Optionally run `prefect diagnostics` from the command line and paste the information here*\r\n```\r\n{\r\n  \"config_overrides\": {\r\n    \"cloud\": {\r\n      \"auth_token\": true,\r\n      \"use_local_secrets\": true\r\n    },\r\n    \"context\": {\r\n      \"secrets\": false\r\n    },\r\n    \"home_dir\": true\r\n  },\r\n  \"env_vars\": [],\r\n  \"system_information\": {\r\n    \"platform\": \"Darwin-19.4.0-x86_64-i386-64bit\",\r\n    \"prefect_version\": \"0.11.2\",\r\n    \"python_version\": \"3.7.7\"\r\n  }\r\n}\r\n```\n", "before_files": [{"content": "\"\"\"\nUtility functions for interacting with Google Cloud.\n\"\"\"\nimport prefect\n\nfrom google.cloud import bigquery, storage\nfrom google.oauth2.service_account import Credentials\n\n\ndef get_google_client(submodule, credentials: dict = None, project: str = None):\n    \"\"\"\n    Utility function for loading Google Client objects from a given set of credentials.\n\n    Args:\n        - submodule: a Python submodule with a Client attribute\n        - credentials (dict, optional): a dictionary of Google credentials used to initialize the Client; if\n            not provided, will attempt to load the Client using ambient environment settings\n        - project (str, optional): the Google project to point the Client to; if not provided, Client defaults\n            will be used\n\n    Returns:\n        - Client: an initialized and authenticated Google Client\n    \"\"\"\n    Client = getattr(submodule, \"Client\")\n    credentials = credentials or prefect.context.get(\"secrets\", {}).get(\n        \"GCP_CREDENTIALS\"\n    )\n    if credentials is not None:\n        credentials = Credentials.from_service_account_info(credentials)\n        project = project or credentials.project_id\n        client = Client(project=project, credentials=credentials)\n    else:\n        client = Client(project=project)\n    return client\n\n\ndef get_storage_client(credentials: dict = None, project: str = None):\n    \"\"\"\n    Utility function for instantiating a Google Storage Client from a given set of credentials.\n\n    Args:\n        - credentials (dict, optional): a dictionary of Google credentials used to initialize the Client; if\n            not provided, will attempt to load the Client using ambient environment settings\n        - project (str, optional): the Google project to point the Client to; if not provided, Client defaults\n            will be used\n\n    Returns:\n        - Client: an initialized and authenticated Google Client\n    \"\"\"\n    return get_google_client(storage, credentials=credentials, project=project)\n\n\ndef get_bigquery_client(credentials: dict = None, project: str = None):\n    \"\"\"\n    Utility function for instantiating a Google BigQuery Client from a given set of credentials.\n\n    Args:\n        - credentials (dict, optional): a dictionary of Google credentials used to initialize the Client; if\n            not provided, will attempt to load the Client using ambient environment settings\n        - project (str, optional): the Google project to point the Client to; if not provided, Client defaults\n            will be used\n\n    Returns:\n        - Client: an initialized and authenticated Google Client\n    \"\"\"\n    return get_google_client(bigquery, credentials=credentials, project=project)\n", "path": "src/prefect/utilities/gcp.py"}], "after_files": [{"content": "\"\"\"\nUtility functions for interacting with Google Cloud.\n\"\"\"\nimport prefect\n\nfrom google.oauth2.service_account import Credentials\n\n\ndef get_google_client(submodule, credentials: dict = None, project: str = None):\n    \"\"\"\n    Utility function for loading Google Client objects from a given set of credentials.\n\n    Args:\n        - submodule: a Python submodule with a Client attribute\n        - credentials (dict, optional): a dictionary of Google credentials used to initialize the Client; if\n            not provided, will attempt to load the Client using ambient environment settings\n        - project (str, optional): the Google project to point the Client to; if not provided, Client defaults\n            will be used\n\n    Returns:\n        - Client: an initialized and authenticated Google Client\n    \"\"\"\n    Client = getattr(submodule, \"Client\")\n    credentials = credentials or prefect.context.get(\"secrets\", {}).get(\n        \"GCP_CREDENTIALS\"\n    )\n    if credentials is not None:\n        credentials = Credentials.from_service_account_info(credentials)\n        project = project or credentials.project_id\n        client = Client(project=project, credentials=credentials)\n    else:\n        client = Client(project=project)\n    return client\n\n\ndef get_storage_client(credentials: dict = None, project: str = None):\n    \"\"\"\n    Utility function for instantiating a Google Storage Client from a given set of credentials.\n\n    Args:\n        - credentials (dict, optional): a dictionary of Google credentials used to initialize the Client; if\n            not provided, will attempt to load the Client using ambient environment settings\n        - project (str, optional): the Google project to point the Client to; if not provided, Client defaults\n            will be used\n\n    Returns:\n        - Client: an initialized and authenticated Google Client\n    \"\"\"\n    from google.cloud import storage\n\n    return get_google_client(storage, credentials=credentials, project=project)\n\n\ndef get_bigquery_client(credentials: dict = None, project: str = None):\n    \"\"\"\n    Utility function for instantiating a Google BigQuery Client from a given set of credentials.\n\n    Args:\n        - credentials (dict, optional): a dictionary of Google credentials used to initialize the Client; if\n            not provided, will attempt to load the Client using ambient environment settings\n        - project (str, optional): the Google project to point the Client to; if not provided, Client defaults\n            will be used\n\n    Returns:\n        - Client: an initialized and authenticated Google Client\n    \"\"\"\n    from google.cloud import bigquery\n\n    return get_google_client(bigquery, credentials=credentials, project=project)\n", "path": "src/prefect/utilities/gcp.py"}]}