今天接到老板需求,有个客户要在老系统centos7上安装 python3.11,本以为很简单,但是也踩了不少坑,这里给大家分享下。
1.解决 yum 源问题
cd /etc/yum.repos.d/ mkdir bak && mv * bak wget -O /etc/yum.repod.d/Centos7-aliyun-x86_64.repo https://mirrors.wlnmp.com/centos/Centos7-aliyun-x86_64.repo yum clean all yum makecache yum install epel-release
2.安装 pyenv
yum -y install git gcc make patch gdbm-devel sqlite-devel readline-devel zlib-devel bzip2-devel # 这里注意:python3.10+要求 OpenSSL 1.1.1+,所以不能直接安装openssl-devel yum remove -y openssl-devel yum install -y openssl11 openssl11-devel # 强制指定编译时使用高版本 SSL export CFLAGS=$(pkg-config --cflags openssl11) export LDFLAGS=$(pkg-config --libs openssl11) # 也可以从能访问github的机器下载号源码包,解压放到家目录下面,然后重命名为.pyenv git clone https://github.com/pyenv/pyenv.git ~/.pyenv # 配置环境变量 cat >> ~/.bashrc <<'EOF' export PYENV_ROOT="$HOME/.pyenv" export PATH="$PYENV_ROOT/bin:$PATH" eval "$(pyenv init --path)" eval "$(pyenv init -)" eval "$(pyenv virtualenv-init -)" EOF # 配置国内镜像,加快下载 python 包的速度 echo 'export PYTHON_BUILD_MIRROR_URL="https://npmmirror.com/mirrors/python"' >> ~/.bashrc source ~/.bashrc pyenv --version
3.安装 python 指定版本
# 查看可安装的版本 pyenv install --list # 安装 3.11.10 这个版本 pyenv install 3.11.10
4.添加 alias,不影响系统自带的 python2(centos7 中 python2 有被操作系统依赖,千万不能直接卸载)
pyenv rehash pyenv global system # echo 'alias python3="pyenv exec python3"' >> ~/.bashrc # echo 'alias pip3="pyenv exec pip3"' >> ~/.bashrc echo 'alias python3="~/.pyenv/versions/3.11.10/bin/python3.11"' >> ~/.bashrc echo 'alias pip3="~/.pyenv/versions/3.11.10/bin/pip3.11"' >> ~/.bashrc source ~/.bashrc python3 --version# 3.11.10 pip3 --version# 对应 3.11 python --version# 2.7.5(系统默认)
5.配置国内 pip 源
$ mkdir ~/.pip $ vim ~/.pip/pip.conf [global] timeout = 6000 index-url=https://mirrors.aliyun.com/pypi/simple/ [install] trusted-host=mirrors.aliyun.com no-cache-dir = true
6.测试
$ python3 $ pip3 install requests
好了,今天的分享就到这里了,希望对大家有所帮助。如果觉得还不错的话,各位看官动动小手点赞加关注,点击下面的链接可以直接进入本公众号,查看历史文章,谢谢大家^_^