Centos7多版本python包不能通用问题

本文介绍了在多版本Python环境下如何管理第三方包。针对Linux系统中自带Python版本较低的情况,提供了三种解决方案:手动编译安装、使用pip安装及采用pyenv进行版本管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

PROBLEM

多版本python共存时安装第三方包不能共用。

REASON

linux系统自带python,不过版本比较低,多为2.7版本。而且许多已经安装好的包都是依赖与这个版本。有时需要高版本的python,就存在多个版本python共存的情形。如果使用ubuntu,apt-get安装版本冲突情况很少见,各个版本的包也都比较全。但是如果用的是CentOS,用yum安装,由于yum内部解析时直接就指定并python版本的。

vim /usr/bin/yum

脚本打头如下。

#!/usr/bin/python
import sys
....................

SOLUTION

修改软链接会导致默认的其他应用无法使用。用yum安装相应的包比如scipy、numpy又都是默认版本python对应的,高版本python对应的包相当于没安装上。

1、一种办法就是下载对应包的源码,指定高版本python安装一次。进入源码包类似执行

python3.5 setup.py install

2、还有一种方式是用pip安装。不过安装pip的时候需要用两个版本的python分别从源码安装一次。感觉比较坑。。。然后用pip安装对应的包就能同时安装多个版本python对应的包了。(试了下不行。。。只对新安装版本有效)

pip install scipy numpy

3、网上还有用pyenv来解决多版本包管理的问题。
pyenv的安装步骤如下:

git clone git://github.com/yyuu/pyenv.git ~/.pyenv
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(pyenv init -)"' >> ~/.bashrc
exec $SHELL -l

相关pyenv更多可以参考这篇博文。感觉写的很清楚。
http://seisman.info/python-pyenv.html

### 升级 Python 版本的详细过程 在 CentOS 7 上升级 Python 臏本是一个多步骤的过程,涉及准备环境、下载新版本、编译安装以及调整系统依赖项。以下是完整的流程: #### 准备工作 为了确保顺利升级 Python,需要先更新系统的软件管理器和开发工具链。 1. **安装必要的软件集合和编译工具** 使用 `yum` 来安装所需的开发工具和库: ```bash yum groupinstall "Development Tools" -y yum install gcc zlib-devel bzip2 bzip2-devel readline-devel sqlite sqlite-devel openssl-devel tk-devel libffi-devel xz-devel -y ``` 这些命令可以提供编译 Python 所需的基础支持[^1]。 #### 下载并解压目标 Python 版本 假设要升级到 Python 3.10.1,则按照以下步骤操作: 1. **下载源码压缩** 利用 `wget` 工具从官方站点获取最新版 Python 的源代码: ```bash wget https://www.python.org/ftp/python/3.10.1/Python-3.10.1.tgz ``` 2. **解压文件** 将下载好的 `.tgz` 文件解压至当前目录: ```bash tar -xvf Python-3.10.1.tgz cd Python-3.10.1 ``` #### 编译与安装 完成上述准备工作后即可开始编译和安装新的 Python 版本。 1. **配置构建选项** 配置脚本用于指定安装路径和其他参数: ```bash ./configure --enable-optimizations --prefix=/usr/local/python3 ``` 2. **执行编译** 开始实际的编译过程,这可能耗时较长取决于服务器性能: ```bash make && make altinstall ``` 此处推荐使用 `make altinstall` 而不是普通的 `make install`,以防止覆盖现有的 `/usr/bin/python` 符号链接[^2]。 #### 创建软链接以便全局调用 为了让整个系统能够识别新版 Python 并通过标准命令访问它,设置相应的符号链接很有必要。 1. **备份原始 Python 及其相关组件** 如果担心破坏现有服务,建议提前做好副本保存: ```bash mv /usr/bin/python /usr/bin/python.bak mv /usr/bin/pip /usr/bin/pip.bak ``` 2. **建立指向新版本的快捷方式** 设置好之后就可以让日常使用的 `python` 或者 `pip` 实际上调用的是刚刚装上的那个高版本实例了: ```bash ln -sf /usr/local/python3/bin/python3 /usr/bin/python3 ln -sf /usr/local/python3/bin/pip3 /usr/bin/pip3 ``` #### 解决 YUM 报错问题 由于部分系统工具仍然依赖于较老版本Python,在切换完成后可能会遇到兼容性障碍,特别是像 `yum` 这样的核心程序。 1. **修改 YUM 启动头信息** 更改启动行使其继续沿用低版本解释引擎运行而不受影响: ```bash sed -i 's/python$/python2.7/' /usr/bin/yum sed -i 's/python$/python2.7/' /usr/libexec/urlgrabber-ext-down ``` 至此,已经成功完成了在 CentOS 7 中将 Python 更新至更高版本的操作,并妥善处理好了潜在冲突事项[^3]。 ```python print("Python upgrade completed successfully!") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值