#!/usr/bin/env python # # Licensed to the Apache Software Foundation (ASF) under one # or more contributor license agreements. See the NOTICE file # distributed with this work for additional information # regarding copyright ownership. The ASF licenses this file # to you under the Apache License, Version 2.0 (the # "License"); you may not use this file except in compliance # with the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, # software distributed under the License is distributed on an # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. from os.path import dirname, abspath import sys # When installing the python shell as a standalone package, this __init__ is # used to workaround the issues stemming from IMPALA-6808. Because of the way # the Impala python environment has been somewhat haphazardly constructed in # a deployed cluster, it ends up being "polluted" with top-level modules that # should really be sub-modules. One of the principal places this occurs is with # the various modules required by the Impala shell. This isn't a concern when # the shell is invoked via a specially installed version of python that belongs # to Impala, but it does become an issue when the shell is being run using the # system python. # # If we want to install the shell as a standalone package, we need to construct # it in such a way that all of the internal modules are contained within a # top-level impala_shell namespace. However, this then breaks various imports # throughout the Impala shell code. The way this file corrects that is to add # the impala_shell directory to PYTHONPATH only when the shell is invoked. As # far as I can tell, there's no cleaner way to address this without fully # resolving IMPALA-6808. impala_shell_dir = dirname(abspath(__file__)) sys.path.append(impala_shell_dir)