|
6 | 6 | import uuid
|
7 | 7 |
|
8 | 8 | import numpy as np
|
9 |
| -import pkg_resources |
10 | 9 |
|
11 | 10 | from distutils.version import LooseVersion
|
12 | 11 | from pandas import compat
|
|
20 | 19 | _GOOGLE_FLAGS_INSTALLED = False
|
21 | 20 | _GOOGLE_FLAGS_VALID_VERSION = False
|
22 | 21 | _HTTPLIB2_INSTALLED = False
|
| 22 | +_SETUPTOOLS_INSTALLED = False |
23 | 23 |
|
24 | 24 | if not compat.PY3:
|
25 |
| - |
| 25 | + |
26 | 26 | try:
|
27 |
| - from apiclient.discovery import build |
28 |
| - from apiclient.http import MediaFileUpload |
29 |
| - from apiclient.errors import HttpError |
| 27 | + import pkg_resources |
| 28 | + _SETUPTOOLS_INSTALLED = True |
| 29 | + except ImportError: |
| 30 | + _SETUPTOOLS_INSTALLED = False |
| 31 | + |
| 32 | + if _SETUPTOOLS_INSTALLED: |
| 33 | + try: |
| 34 | + from apiclient.discovery import build |
| 35 | + from apiclient.http import MediaFileUpload |
| 36 | + from apiclient.errors import HttpError |
30 | 37 |
|
31 |
| - from oauth2client.client import OAuth2WebServerFlow |
32 |
| - from oauth2client.client import AccessTokenRefreshError |
33 |
| - from oauth2client.client import flow_from_clientsecrets |
34 |
| - from oauth2client.file import Storage |
35 |
| - from oauth2client.tools import run |
36 |
| - _GOOGLE_API_CLIENT_INSTALLED=True |
37 |
| - _GOOGLE_API_CLIENT_VERSION = pkg_resources.get_distribution('google-api-python-client').version |
| 38 | + from oauth2client.client import OAuth2WebServerFlow |
| 39 | + from oauth2client.client import AccessTokenRefreshError |
| 40 | + from oauth2client.client import flow_from_clientsecrets |
| 41 | + from oauth2client.file import Storage |
| 42 | + from oauth2client.tools import run |
| 43 | + _GOOGLE_API_CLIENT_INSTALLED=True |
| 44 | + _GOOGLE_API_CLIENT_VERSION = pkg_resources.get_distribution('google-api-python-client').version |
38 | 45 |
|
39 |
| - if LooseVersion(_GOOGLE_API_CLIENT_VERSION >= '1.2.0'): |
40 |
| - _GOOGLE_API_CLIENT_VALID_VERSION = True |
| 46 | + if LooseVersion(_GOOGLE_API_CLIENT_VERSION >= '1.2.0'): |
| 47 | + _GOOGLE_API_CLIENT_VALID_VERSION = True |
41 | 48 |
|
42 |
| - except ImportError: |
43 |
| - _GOOGLE_API_CLIENT_INSTALLED = False |
| 49 | + except ImportError: |
| 50 | + _GOOGLE_API_CLIENT_INSTALLED = False |
44 | 51 |
|
45 | 52 |
|
46 |
| - try: |
47 |
| - import gflags as flags |
48 |
| - _GOOGLE_FLAGS_INSTALLED = True |
| 53 | + try: |
| 54 | + import gflags as flags |
| 55 | + _GOOGLE_FLAGS_INSTALLED = True |
49 | 56 |
|
50 |
| - _GOOGLE_FLAGS_VERSION = pkg_resources.get_distribution('python-gflags').version |
| 57 | + _GOOGLE_FLAGS_VERSION = pkg_resources.get_distribution('python-gflags').version |
51 | 58 |
|
52 |
| - if LooseVersion(_GOOGLE_FLAGS_VERSION >= '2.0.0'): |
53 |
| - _GOOGLE_FLAGS_VALID_VERSION = True |
| 59 | + if LooseVersion(_GOOGLE_FLAGS_VERSION >= '2.0.0'): |
| 60 | + _GOOGLE_FLAGS_VALID_VERSION = True |
54 | 61 |
|
55 |
| - except ImportError: |
56 |
| - _GOOGLE_FLAGS_INSTALLED = False |
| 62 | + except ImportError: |
| 63 | + _GOOGLE_FLAGS_INSTALLED = False |
57 | 64 |
|
58 |
| - try: |
59 |
| - import httplib2 |
60 |
| - _HTTPLIB2_INSTALLED = True |
61 |
| - except ImportError: |
62 |
| - _HTTPLIB2_INSTALLED = False |
| 65 | + try: |
| 66 | + import httplib2 |
| 67 | + _HTTPLIB2_INSTALLED = True |
| 68 | + except ImportError: |
| 69 | + _HTTPLIB2_INSTALLED = False |
63 | 70 |
|
64 | 71 |
|
65 | 72 | logger = logging.getLogger('pandas.io.gbq')
|
@@ -296,10 +303,14 @@ def _test_imports():
|
296 | 303 | _GOOGLE_FLAGS_INSTALLED
|
297 | 304 | _GOOGLE_FLAGS_VALID_VERSION
|
298 | 305 | _HTTPLIB2_INSTALLED
|
| 306 | + _SETUPTOOLS_INSTALLED |
299 | 307 |
|
300 | 308 | if compat.PY3:
|
301 | 309 | raise NotImplementedError("Google's libraries do not support Python 3 yet")
|
302 | 310 |
|
| 311 | + if not _SETUPTOOLS_INSTALLED: |
| 312 | + raise ImportError('Could not import pkg_resources (setuptools).') |
| 313 | + |
303 | 314 | if not _GOOGLE_API_CLIENT_INSTALLED:
|
304 | 315 | raise ImportError('Could not import Google API Client.')
|
305 | 316 |
|
|
0 commit comments