67 lines
2.1 KiB
Python
67 lines
2.1 KiB
Python
# Copyright 2013 Google Inc. All Rights Reserved.
|
|
|
|
"""Does some initial setup and checks for all the bootstrapping scripts."""
|
|
|
|
|
|
from __future__ import absolute_import
|
|
from __future__ import unicode_literals
|
|
|
|
import os
|
|
import sys
|
|
|
|
|
|
# We don't want to import any libraries at this point so we handle py2/3
|
|
# manually.
|
|
SITE_PACKAGES = 'CLOUDSDK_PYTHON_SITEPACKAGES'
|
|
VIRTUAL_ENV = 'VIRTUAL_ENV'
|
|
if sys.version_info[0] == 2:
|
|
SITE_PACKAGES = SITE_PACKAGES.encode('utf-8')
|
|
VIRTUAL_ENV = VIRTUAL_ENV.encode('utf-8')
|
|
|
|
|
|
# If we're in a virtualenv, always import site packages. Also, upon request.
|
|
# We can't import anything from googlecloudsdk here so we are just going to
|
|
# assume no one has done anything as silly as to put any unicode in either of
|
|
# these env vars.
|
|
import_site_packages = (os.environ.get(SITE_PACKAGES) or
|
|
os.environ.get(VIRTUAL_ENV))
|
|
|
|
if import_site_packages:
|
|
# pylint:disable=unused-import
|
|
# pylint:disable=g-import-not-at-top
|
|
import site
|
|
|
|
# Put Google Cloud CLI libs on the path
|
|
root_dir = os.path.normpath(os.path.join(
|
|
os.path.dirname(os.path.realpath(__file__)), '..', '..'))
|
|
lib_dir = os.path.join(root_dir, 'lib')
|
|
third_party_dir = os.path.join(lib_dir, 'third_party')
|
|
|
|
sys.path = [lib_dir, third_party_dir] + sys.path
|
|
|
|
# When python is not invoked with the -S option, it can preload google module
|
|
# via .pth file setting its __path__. After this happens, our vendored google
|
|
# package may not in the __path__. After our vendored dependency directory is
|
|
# put at the first place in the sys.path, google module should be reloaded,
|
|
# so that our vendored copy can be preferred.
|
|
if 'google' in sys.modules:
|
|
import google # pylint: disable=g-import-not-at-top
|
|
try:
|
|
reload(google)
|
|
except NameError:
|
|
import importlib # pylint: disable=g-import-not-at-top
|
|
importlib.reload(google)
|
|
|
|
|
|
# pylint: disable=g-import-not-at-top
|
|
from googlecloudsdk.core.util import platforms
|
|
|
|
|
|
# Add more methods to this list for universal checks that need to be performed
|
|
def DoAllRequiredChecks():
|
|
if not platforms.PythonVersion().IsCompatible():
|
|
sys.exit(1)
|
|
|
|
|
|
DoAllRequiredChecks()
|