【发布时间】:2016-06-26 11:27:13
【问题描述】:
只是想询问在我们的 opscenter rpm 上检查的可能性。启动 opscenter 时出现此错误
[opscenter@mybox]$ sudo /etc/init.d/opscenterd start
Starting Cassandra cluster manager opscenterd
Starting opscenterdNo python interpreter found. Abort.
[opscenter@mybox start-stop-scripts]$ cd [FAILED]
我看到安装了 python,但不知道如何让 opscenter 指向这个位置
[opscenter@mybox ~]$ python -V ; which python
Python 2.7.1
/opt/mybox/pkg/python/bin/python
Opscenter 安装在 /opt/mybox/pkg/opscenter 上,我在 bin 中的 opscenter 文件中看到了一些变量
# get around sudo vagaries in setting $HOME
if [ "x$OPSC_HOME" = "x" ]; then
if [ $is_mac = 1 ]; then
OPSC_HOME="/Users/$USER"
else
OPSC_HOME=$(getent passwd $(id -u) | cut -d ':' -f 6)
fi
fi
export HOME=$OPSC_HOME
cd "$(dirname "$0")"/../
if [ $(uname -m) = "x86_64" ]; then
PY_ARCH="amd64"
else
PY_ARCH="i386"
fi
# we support python2.6-2.7
PYVERSIONS="2.6 2.7"
[ -z "$PYTHON" ] && \
for i in $PYVERSIONS; do
which python$i > /dev/null 2>&1 && PYTHON=$(which python$i)
done
[ -n "$PYTHON" ] || {
echo "No python interpreter found. Abort." >&2
exit 3
}
PY_VER=$($PYTHON -c "import platform; v = platform.python_version(); print v[:v.index('.', 2)]")
if [ $is_mac = 1 ]; then
PY_DISTRO="./lib/py-osx/${PY_VER}/amd64" # always use 64bit for OS X
elif [ -f "/etc/system-release" ]; then
# This branch is for the Amazon Linux distribution
# We will use the highest level "VER" available because Amazon Linux
# does not use version numbers like RHEL and Centos
VER=`ls -1 ./lib/py-redhat/${PY_VER}/ | sort -n | tail -n 1`
PY_DISTRO="./lib/py-redhat/${PY_VER}/shared/${PY_ARCH}:./lib/py-redhat/${PY_VER}/${VER}/${PY_ARCH}"
elif [ -f "/etc/redhat-release" ]; then
VER=`rpm -q centos-release --qf %{VERSION}`
if [ 1 -eq $? ]; then
VER=`rpm -q redhat-release --qf %{VERSION}` # RHEL 5
if [ 1 -eq $? ]; then
VER=`rpm -q redhat-release-server --qf %{VERSION}` # RHEL 6
if [ 1 -eq $? ]; then
VER=`rpm -q enterprise-release --qf %{VERSION}` # Oracle Linux
fi
fi
fi
VER=`echo $VER | cut -b 1`
PY_DISTRO="./lib/py-redhat/${PY_VER}/shared/${PY_ARCH}:./lib/py-redhat/${PY_VER}/${VER}/${PY_ARCH}"
else
PY_DISTRO="./lib/py-debian/${PY_VER}/${PY_ARCH}"
fi
export PYTHONPATH="./src:\
/usr/lib/python${PY_VER}/site-packages:\
./src/lib/python${PY_VER}/site-packages:\
./lib/python${PY_VER}/site-packages:\
./lib/py:\
${PY_DISTRO}:\
${PYTHONPATH}:"
【问题讨论】:
-
在终端中运行
which python2.7会打印什么? -
[opscenter@mybox ~]$ which python 2.7 /opt/mybox/pkg/python/bin/python /usr/bin/which: no 2.7 in (/usr/kerberos/bin:/opt /mybox/pkg/python/bin:/usr/local/bin:/bin:/usr/bin:/opt/mybox/pkg/opscenter/bin:/sbin:/usr/local/bin:/usr/bin)
-
您在
python和2.7之间放置了一个空格,所以which认为它们是两个独立的命令。请在没有中间空格的情况下重试,并将结果粘贴到您的问题中的代码块中,以便保留格式。 -
[opscenter@mybox ~]$ which python2.7 /opt/mybox/pkg/python/bin/python2.7
-
你能在 $PYVERSIONS 的 for i 中回显 $i 吗?我的shell有点生疏,不过最好
for i in 2.6 2.7; do,引号可以让它不拆分字符串。