#!/usr/bin/env bash# Copyright 2015 The TensorFlow Authors. All Rights Reserved.## Licensed 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.# ==============================================================================set -e -o errexitif [ -d "../org_tensorflow" ]; thenscript_path="../org_tensorflow"else# Prefix expected paths with ./ locally and external/reponame/ for remote repos.# TODO(kchodorow): remove once runfiles paths are fixed, see# https://github.com/bazelbuild/bazel/issues/848.script_path=$(dirname $(dirname $(dirname "0ドル")))script_path=${script_path:-.}fiEXPECTED_PATHS="$script_path/util/python/python_include"\" $script_path/util/python/python_lib"\" $script_path/third_party/py/numpy/numpy_include"function main {argument="1ドル"shiftcase $argument in--check)check_pythonexit 0;;--setup)setup_python "1ドル"exit 0;;esac}function python_path {"$PYTHON_BIN_PATH" - <<ENDfrom __future__ import print_functionimport siteimport ostry:input = raw_inputexcept NameError:passpython_paths = []if os.getenv('PYTHONPATH') is not None:python_paths = os.getenv('PYTHONPATH').split(':')try:library_paths = site.getsitepackages()except AttributeError:from distutils.sysconfig import get_python_liblibrary_paths = [get_python_lib()]all_paths = set(python_paths + library_paths)paths = []for path in all_paths:if os.path.isdir(path):paths.append(path)if len(paths) == 1:print(paths[0])else:ret_paths = ",".join(paths)print(ret_paths)END}function default_python_path {PYTHON_ARG="1ドル" "$PYTHON_BIN_PATH" - <<ENDfrom __future__ import print_functionimport osdefault = os.getenv('PYTHON_ARG')default = str(default)print(default)END}function setup_python {PYTHON_BIN_PATH="1ドル";if [ -z "$PYTHON_BIN_PATH" ]; thenecho "PYTHON_BIN_PATH was not provided. Did you run configure?"exit 1fiif [ ! -x "$PYTHON_BIN_PATH" ] || [ -d "$PYTHON_BIN_PATH" ]; thenecho "PYTHON_BIN_PATH is not executable. Is it the python binary?"exit 1filocal python_major_version=$("${PYTHON_BIN_PATH}" -c 'from __future__ import print_function; import sys; print(sys.version_info[0]);')if [ "$python_major_version" == "" ]; thenecho -e "\n\nERROR: Problem getting python version. Is $PYTHON_BIN_PATH the correct python binary?"exit 1filocal python_include="$("${PYTHON_BIN_PATH}" -c 'from __future__ import print_function; from distutils import sysconfig; print(sysconfig.get_python_inc());')"if [ "$python_include" == "" ]; thenecho -e "\n\nERROR: Problem getting python include path. Is distutils installed?"exit 1fiif [ -z "$PYTHON_LIB_PATH" ]; thenlocal python_lib_path# Split python_path into an array of paths, this allows path containing spacesIFS=','python_lib_path=($(python_path))unset IFSif [ 1 = "$USE_DEFAULT_PYTHON_LIB_PATH" ]; thenPYTHON_LIB_PATH="$(default_python_path "${python_lib_path[0]}")"echo "Using python library path: $PYTHON_LIB_PATH"elseecho "Found possible Python library paths:"for x in "${python_lib_path[@]}"; doecho " $x"doneset -- "${python_lib_path[@]}"echo "Please input the desired Python library path to use. Default is ["1ドル"]"read b || trueif [ "$b" == "" ]; thenPYTHON_LIB_PATH="$(default_python_path "${python_lib_path[0]}")"echo "Using python library path: $PYTHON_LIB_PATH"elsePYTHON_LIB_PATH="$b"fififiif test -d "$PYTHON_LIB_PATH" -a -x "$PYTHON_LIB_PATH"; thenpython_lib="$PYTHON_LIB_PATH"elseecho -e "\n\nERROR: Invalid python library path: ${PYTHON_LIB_PATH}."exit 1filocal numpy_include=$("${PYTHON_BIN_PATH}" -c 'from __future__ import print_function; import numpy; print(numpy.get_include());')if [ "$numpy_include" == "" ]; thenecho -e "\n\nERROR: Problem getting numpy include path. Is numpy installed?"exit 1fifor x in $EXPECTED_PATHS; doif [ -e "$x" ]; thenrm -rf "$x"fidone# ln -sf is actually implemented as copying in msys since creating symbolic# links is privileged on Windows. But copying is too slow, so invoke mklink# to create junctions on Windows.if is_windows; thencmd /c "mklink /J util\\python\\python_include \"${python_include}\""cmd /c "mklink /J util\\python\\python_lib \"${python_lib}\""cmd /c "mklink /J third_party\\py\\numpy\\numpy_include \"${numpy_include}\""elseln -sf "${python_include}" util/python/python_includeln -sf "${python_lib}" util/python/python_libln -sf "${numpy_include}" third_party/py/numpy/numpy_includefi# Convert python path to Windows style before writing into bazel.rcif is_windows; thenPYTHON_BIN_PATH="$(cygpath -m "$PYTHON_BIN_PATH")"fi# Write tools/bazel.rcecho "# Autogenerated by configure: DO NOT EDIT" > tools/bazel.rcsed -e "s/\$PYTHON_MAJOR_VERSION/$python_major_version/g" \-e "s[\$PYTHON_BINARY[\"$PYTHON_BIN_PATH\"[g" \tools/bazel.rc.template >> tools/bazel.rc# Write tools/python_bin_path.shecho "export PYTHON_BIN_PATH=\"$PYTHON_BIN_PATH\"" > tools/python_bin_path.sh}PLATFORM="$(uname -s | tr 'A-Z' 'a-z')"function is_windows() {# On windows, the shell script is actually running in msysif [[ "${PLATFORM}" =~ msys_nt* ]]; thentrueelsefalsefi}function check_python {for x in $EXPECTED_PATHS; doif [ ! -e "$x" ]; thenecho -e "\n\nERROR: Cannot find '${x}'. Did you run configure?\n\n" 1>&2exit 1fi# Don't check symbolic link on Windowsif ! is_windows && [ ! -L "${x}" ]; thenecho -e "\n\nERROR: '${x}' is not a symbolic link. Internal error.\n\n" 1>&2exit 1fiif is_windows; then# In msys, readlink <path> doesn't work, because no symbolic link on# Windows. readlink -f <path> returns the real path of a junction.true_path=$(readlink -f "${x}")elsetrue_path=$(readlink "${x}")fiif [ ! -d "${true_path}" ]; thenecho -e "\n\nERROR: '${x}' does not refer to an existing directory: ${true_path}. Do you need to rerun configure?\n\n" 1>&2exit 1fidone}main "$@"
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。