in configure.py [0:0]
def setup_python(environ_cp):
"""Setup python related env variables."""
# Get PYTHON_BIN_PATH, default is the current running python.
default_python_bin_path = sys.executable
ask_python_bin_path = (
'Please specify the location of python. [Enter to use the default: {}]: '
).format(default_python_bin_path)
while True:
python_bin_path = get_from_env_or_user_or_default(
environ_cp,
'PYTHON_BIN_PATH',
ask_python_bin_path,
default_python_bin_path,
)
# Check if the path is valid
if os.path.isfile(python_bin_path) and os.access(python_bin_path, os.X_OK):
break
elif not os.path.exists(python_bin_path):
print('Invalid python path: {} cannot be found.'.format(python_bin_path))
else:
print(
'{} is not executable. Is it the python binary?'.format(
python_bin_path
)
)
environ_cp['PYTHON_BIN_PATH'] = ''
# Get PYTHON_LIB_PATH
python_lib_path = environ_cp.get('PYTHON_LIB_PATH')
if not python_lib_path:
python_lib_paths = get_python_path(environ_cp, python_bin_path)
if environ_cp.get('USE_DEFAULT_PYTHON_LIB_PATH') == '1':
python_lib_path = python_lib_paths[0]
else:
print(
'Found possible Python library paths:\n %s'
% '\n '.join(python_lib_paths)
)
default_python_lib_path = python_lib_paths[0]
python_lib_path = get_input(
'Please input the desired Python library path to use. '
'Enter to use the default: [{}]\n'.format(python_lib_paths[0])
)
if not python_lib_path:
python_lib_path = default_python_lib_path
environ_cp['PYTHON_LIB_PATH'] = python_lib_path
# Set-up env variables used by python_configure.bzl
write_action_env('PYTHON_BIN_PATH', python_bin_path)
write_action_env('PYTHON_LIB_PATH', python_lib_path)
write_to_bazelrc('build --python_path="{}"'.format(python_bin_path))
environ_cp['PYTHON_BIN_PATH'] = python_bin_path
# If choosen python_lib_path is from a path specified in the PYTHONPATH
# variable, need to tell bazel to include PYTHONPATH
if environ_cp.get('PYTHONPATH'):
python_paths = environ_cp.get('PYTHONPATH').split(':')
if python_lib_path in python_paths:
write_action_env('PYTHONPATH', environ_cp.get('PYTHONPATH'))
# Write tools/python_bin_path.sh
with open(_PYTHON_BIN_PATH, 'a') as f:
f.write('export PYTHON_BIN_PATH="{}"'.format(python_bin_path))