centos 安装、卸载、管理多版本 python

最近负责了一些 python 开发的服务,所以需要在服务器上安装对应的运行环境。本文主要用来记录一下在 centos7 上 python 的安装、卸载,以及多版本管理工具的使用。

通过源码安装 python

bash 复制代码
# 如果下载不下来的话,可以手动下载后,再 scp 到服务器上去
wget https://www.python.org/ftp/python/3.10.11/Python-3.10.11.tgz

# 解压
tar -zxvf Python-3.10.11.tgz

# 将源码拷贝到 /usr/local/src 目录下
mv Python-3.10.11 /usr/local/src

# 进入源码目录
cd /usr/local/src/Python-3.10.11/

# 安装
./configure --prefix=/usr/local/python3
make && make install

# 建立软连接
ln -s /usr/local/python3/bin/python3 /usr/bin/python3
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3

验证安装是否成功,输入 python3, 看到如下内容就说明安装成功了

卸载 python

bash 复制代码
# 卸载
rpm -qa|grep python3|xargs rpm -ev --allmatches --nodeps
# 删除所有残余文件
whereis python3 |xargs rm -frv

版本管理工具 pyenv

一键安装脚本,如遇到网络问题,无法直接安装时,可以采用源码安装的方式。

bash 复制代码
curl https://pyenv.run | bash

源码安装步骤如下

bash 复制代码
git clone https://github.com/pyenv/pyenv.git ~/.pyenv

# 编译
cd ~/.pyenv && src/configure && make -C src

配置环境变量

bash 复制代码
vim ~/.bashrc

# 增加如下内容
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"

# 刷新环境变量配置
source ~/.bashrc

验证是否安装成功,输入 pyenv 命令

因为 pyenv 默认是从 python.org 来下载对应版本的 python 安装包的。但是由于网络问题,经常是没法正常使用的,所以可以使用其他的镜像来下载,放到指定的目录然后在安装即可,一行命令安装指定版本的 python,如下:

bash 复制代码
export v=3.10.11; wget https://npm.taobao.org/mirrors/python/$v/Python-$v.tar.xz --no-check-certificate -P ~/.pyenv/cache/; pyenv install $v 

安装 3.10.11 版本报错

找了一圈解决方案,还是没搞定,弃坑......

Miniconda 安装

bash 复制代码
wget https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh

# 安装
sh Miniconda3-latest-Linux-x86_64.sh

# 安装指定版本的 python
conda create -n my_env python=3.10.11

# 激活环境
conda activate my_env

# 退出环境
conda deactivate

# 查看所有环境
conda info -e
conda env list

# 禁止用户登录后自动激活 base 环境
conda config --set auto_activate_base false

# 安装依赖
conda install numpy

# 列出依赖
conda list

# 卸载已安装的包
conda uninstall numpy

# 删除没有用的包
conda clean -p

no module named "_ssl" 解决

bash 复制代码
wget https://www.openssl.org/source/old/1.1.1/openssl-1.1.1.tar.gz

# 解压进入 openssl 目录中
tar -zxvf openssl-1.1.1.tar.gz
cd openssl-1.1.1

# 安装 openssl
./config --prefix=/usr/local/openssl
make && make install

# 备份旧版本的 openssl
mv /usr/bin/openssl /usr/bin/openssl.old
mv /usr/include/openssl /usr/include/openssl.old

# 新建连接
ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
ln -s /usr/local/openssl/include/openssl /usr/include/openssl

# 库类文件
echo "/usr/local/openssl/lib" >> /etc/ld.so.conf

# 重载配置
ldconfig 

验证 openssl 是否安装成功,输入 openssl version,查看版本是否是 1.1.1

重新编译安装 python

bash 复制代码
cd /usr/local/src/Python-3.10.11/
./configure --prefix=/usr/local/python3 --with-openssl=/usr/local/openssl
make && make install

导入 ssl 模块,验证是否解决问题

重装 yum

参考文章

相关推荐
杨杨杨大侠2 小时前
Jev、Kev、Laya:决策模型怎么选,什么时候需要微调?
人工智能·python·agent
EatFan2 小时前
Spring Boot 4 落地观察:从 yudao-cloud、matecloud、JPower 看国产脚手架的升级路线与迁移清单
java·spring boot·后端·spring cloud·微服务·后端开发·jdk 21
LOVE️YOU2 小时前
Python 在定义函数时,究竟定义的是什么?
python
段一凡-华北理工大学2 小时前
大模型应用开发 100 天:Python + LLM 从入门到精通 day26~Prompt 调试与优化——A/B 测试与效果评估
windows·python·大模型·prompt·智能体·提示词工程·高炉智能化
Minecraft红客2 小时前
以撒的结合
python·游戏·电脑·娱乐
Circ.3 小时前
Python 调试 Litellm 本地大模型接口:模型列表与对话接口实操踩坑记录
开发语言·python
风早爽太3 小时前
用 ‌Render‌ 快速部署网站和常见问题解决
python·fastapi
波力海苔夹心脆6753 小时前
C# 序列化与反序列化详解:System.Text.Json、Newtonsoft.Json、XmlSerializer 用法、特性选项与安全实践
经验分享·后端·c#·json·.net
JavaGuide4 小时前
NVIDIA 又开源了!这次给 AI Agent 加上权限管控
前端·后端