Spaces:
Running
Running
# 参数: | |
python_version="3.6.5"; | |
system_version="centos"; | |
# parse options | |
while true; do | |
[ -z "${1:-}" ] && break; # break if there are no arguments | |
case "$1" in | |
--*) name=$(echo "$1" | sed s/^--// | sed s/-/_/g); | |
eval '[ -z "${'"$name"'+xxx}" ]' && echo "$0: invalid option $1" 1>&2 && exit 1; | |
old_value="(eval echo \\$$name)"; | |
if [ "${old_value}" == "true" ] || [ "${old_value}" == "false" ]; then | |
was_bool=true; | |
else | |
was_bool=false; | |
fi | |
# Set the variable to the right value-- the escaped quotes make it work if | |
# the option had spaces, like --cmd "queue.pl -sync y" | |
eval "${name}=\"$2\""; | |
# Check that Boolean-valued arguments are really Boolean. | |
if $was_bool && [[ "$2" != "true" && "$2" != "false" ]]; then | |
echo "$0: expected \"true\" or \"false\": $1 $2" 1>&2 | |
exit 1; | |
fi | |
shift 2; | |
;; | |
*) break; | |
esac | |
done | |
echo "python_version: ${python_version}"; | |
echo "system_version: ${system_version}"; | |
if [ ${system_version} = "centos" ]; then | |
# 安装 python 开发编译环境 | |
yum -y groupinstall "Development tools" | |
yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel | |
yum install libffi-devel -y | |
yum install -y wget | |
yum install -y make | |
mkdir -p /data/dep | |
cd /data/dep || exit 1; | |
if [ ! -e Python-${python_version}.tgz ]; then | |
wget -P /data/dep https://www.python.org/ftp/python/${python_version}/Python-${python_version}.tgz | |
fi | |
cd /data/dep || exit 1; | |
if [ ! -d Python-${python_version} ]; then | |
tar -zxvf Python-${python_version}.tgz | |
cd /data/dep/Python-${python_version} || exit 1; | |
fi | |
mkdir /usr/local/python-${python_version} | |
./configure --prefix=/usr/local/python-${python_version} | |
make && make install | |
/usr/local/python-${python_version}/bin/python3 -V | |
/usr/local/python-${python_version}/bin/pip3 -V | |
rm -rf /usr/local/bin/python3 | |
rm -rf /usr/local/bin/pip3 | |
ln -s /usr/local/python-${python_version}/bin/python3 /usr/local/bin/python3 | |
ln -s /usr/local/python-${python_version}/bin/pip3 /usr/local/bin/pip3 | |
python3 -V | |
pip3 -V | |
elif [ ${system_version} = "ubuntu" ]; then | |
# 安装 python 开发编译环境 | |
# https://zhuanlan.zhihu.com/p/506491209 | |
# 刷新软件包目录 | |
sudo apt update | |
# 列出当前可用的更新 | |
sudo apt list --upgradable | |
# 如上一步提示有可以更新的项目,则执行更新 | |
sudo apt -y upgrade | |
# 安装 GCC 编译器 | |
sudo apt install gcc | |
# 检查安装是否成功 | |
gcc -v | |
# 安装依赖 | |
sudo apt install -y build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev libbz2-dev liblzma-dev sqlite3 libsqlite3-dev tk-dev uuid-dev libgdbm-compat-dev | |
mkdir -p /data/dep | |
cd /data/dep || exit 1; | |
if [ ! -e Python-${python_version}.tgz ]; then | |
# sudo wget -P /data/dep https://www.python.org/ftp/python/3.6.5/Python-3.6.5.tgz | |
sudo wget -P /data/dep https://www.python.org/ftp/python/${python_version}/Python-${python_version}.tgz | |
fi | |
cd /data/dep || exit 1; | |
if [ ! -d Python-${python_version} ]; then | |
# tar -zxvf Python-3.6.5.tgz | |
tar -zxvf Python-${python_version}.tgz | |
# cd /data/dep/Python-3.6.5 | |
cd /data/dep/Python-${python_version} || exit 1; | |
fi | |
# mkdir /usr/local/python-3.6.5 | |
mkdir /usr/local/python-${python_version} | |
# 检查依赖与配置编译 | |
# sudo ./configure --prefix=/usr/local/python-3.6.5 --enable-optimizations --with-lto --enable-shared | |
sudo ./configure --prefix=/usr/local/python-${python_version} --enable-optimizations --with-lto --enable-shared | |
cpu_count=$(cat /proc/cpuinfo | grep processor | wc -l) | |
# sudo make -j 4 | |
sudo make -j "${cpu_count}" | |
/usr/local/python-${python_version}/bin/python3 -V | |
/usr/local/python-${python_version}/bin/pip3 -V | |
rm -rf /usr/local/bin/python3 | |
rm -rf /usr/local/bin/pip3 | |
ln -s /usr/local/python-${python_version}/bin/python3 /usr/local/bin/python3 | |
ln -s /usr/local/python-${python_version}/bin/pip3 /usr/local/bin/pip3 | |
python3 -V | |
pip3 -V | |
fi | |