centos通过源码升级python版本2.7->3.6

1. 从Python官网到获取Python3的包, 切换到目录/usr/local/src
cd /usr/local/src
#wget https://www.python.org/ftp/python/3.6.3/Python-3.6.3.tgz

2. 使用命令如下命令进行解压缩:
 tar -xzf Python-3.6.3.tgz
3. 在/usr/local路径下创建目录--python3, 为第4步的安装目录

$mkdir /usr/local/python3
4. 编译安装(会自动安装pip-7.1.2)

$cd /usr/local/src/Python-3.6.3
#./configure --prefix=/usr/local/python3
#make all
#make install
5. 进入安装的绝对路径,检查是否安装成功

$ /usr/local/python3/bin/python3.6 -V
 Python 3.6.3
6.查看环境变量,启动python时默认按照PATH的顺序进行查找,在/usr/bin中的python此时为Python2.6的。

 $echo $PATH
 /usr/lib/qt-3.3/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/gordon/bin

7.修改软连接,启动python时指向python3.6
 修改软连接
 ln -s /usr/local/python3/bin/python3 /usr/bin/python3
这里是为了python2与python3共存,所以建立的软连接是python3,如果只保留python3,那就直接备份python2,但是修改有yum就不能正常使用了,需要修改 yum的配置文件,
指定python2.6.6
操作如下:
1 备份python
mv /usr/bin/python /usr/bin/python2.6.6
2 修改软连接
 ln -s /usr/local/python3/bin/python3 /usr/bin/python
3 升级完python之后,yum就不好用了,需要修改/usr/bin/yum,改为使用python2.6.6
#!/usr/bin/python2.6.6


8为了只用时输入方便可以添加alias
[root@mail ~]# cd ~
[root@mail ~]# cat .bashrc 
# .bashrc
# User specific aliases and functions
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
alias py='/usr/bin/python3'
alias python3='/usr/bin/python3'
# Source global definitions
if [ -f /etc/bashrc ]; then
	. /etc/bashrc
fi
[root@mail ~]# source .bashrc
9. 验证默认是否启动python3.6

$ python3 -V
 Python 3.6.3


转载于:https://www.cnblogs.com/lihuaichen/p/8270146.html

<think>嗯,用户现在遇到了在编译Python 3.6.4时出现“Failed to build these modules: nis”的问题。我需要先理解这个错误的原因,然后给出解决方案。 首先,用户之前已经解决了C编译器缺失的问题,现在编译过程中某个模块失败了。模块nis编译失败,这可能是因为系统缺少相关的库或头文件。nis模块是Python中用于支持NIS(Network Information Service)的模块,通常依赖于libnsl库。 接下来,我需要确认nis模块的依赖。在Linux系统中,编译nis模块通常需要安装libnsl-dev或者类似的开发包。不同的发行版包名可能不同,比如Ubuntu/Debian是libnsl-dev,而CentOS/RHEL可能是libnsl-devel。用户之前可能已经安装了其他依赖,但可能漏掉了这个。 然后,用户提供的日志中显示编译过程继续完成了其他脚本的调整,如pydoc3、idle3等,这说明主要问题可能只在nis模块上。用户可能忽略了安装libnsl-dev,或者配置时没有检测到相关库的存在。 另外,用户可能是在较新的Linux发行版上编译旧版本Python 3.6.4。因为有些新系统可能默认不再安装NIS相关的库,或者库的位置发生了变化,导致configure脚本无法正确找到它们。这时候需要手动安装依赖包,或者在配置时禁用该模块。 如果用户不需要nis模块,可以建议在configure时添加--disable-nis选项来跳过编译。但如果用户确实需要这个模块,就必须安装对应的开发包。还需要提醒用户安装后重新运行configure和make,或者清理之前的编译结果再重新编译。 此外,用户可能在安装依赖库后没有清理之前的编译缓存,导致错误仍然存在。需要建议用户在安装完libnsl-dev后执行make clean,然后重新运行configure和make,以确保所有模块重新编译。 最后,需要给出具体的命令示例,针对不同的Linux发行版提供安装libnsl-dev或libnsl-devel的方法,以及配置选项的使用方法。同时,提醒用户检查config.log以获取更详细的错误信息,以便进一步排除其他可能的问题。</think>--- ### **问题分析** 在编译 Python 3.6.4 时出现 **`Failed to build these modules: nis`** 错误,表示 `nis`(Network Information Service)模块编译失败。该模块依赖于系统提供的 `libnsl` 库,若缺少相关依赖或系统不支持 NIS 协议,会导致此问题。 以下是详细解决方案: --- ### **1. 原因解析** - **`nis` 模块的作用**: `nis` 是 Python 标准库中用于支持 **NIS(网络信息服务)** 的模块,通常在企业级 Linux 环境中使用。 **现代 Linux 发行版默认可能不再支持或未安装 NIS 相关库**。 - **常见触发场景**: - 系统未安装 `libnsl-dev`(或 `libnsl-devel`)开发包。 - 系统内核或环境不支持 NIS 协议(例如容器化环境)。 - Python 源码配置未正确检测到依赖库。 --- ### **2. 解决方案** #### **(1) 安装 `libnsl-dev` 依赖** 在 **Ubuntu/Debian** 系统上: ```bash sudo apt update sudo apt install libnsl-dev -y ``` 在 **CentOS/RHEL** 系统上: ```bash sudo yum install libnsl-devel -y ``` #### **(2) 重新编译 Python** 安装依赖后,清理旧编译缓存并重新编译: ```bash # 进入 Python 源码目录 cd /home/gcat/Python-3.6.4 # 清理旧编译文件 make clean # 重新运行 configure(若之前未启用优化) ./configure --enable-optimizations # 重新编译 make -j $(nproc) ``` --- ### **3. 可选方案:禁用 `nis` 模块** 如果不需要 NIS 功能,可在 `configure` 时直接禁用该模块: ```bash ./configure --enable-optimizations --disable-nis ``` --- ### **4. 验证编译结果** 重新编译后,检查输出日志中是否仍有 `nis` 报错,并确认 Python 是否安装成功: ```bash # 查看已编译模块 python3.6 -c "import sys; print(sys.modules.keys())" | grep nis # 若输出包含 `nis`,则编译成功;若无输出,表示模块被跳过(但不会影响 Python 核心功能) ``` --- ### **5. 扩展说明** - **为什么 `nis` 模块容易失败?** -版本 Linux(如 Ubuntu 20.04+、CentOS 8+)默认不再集成 NIS 服务。 - 容器或最小化安装的系统可能缺少相关依赖。 - **对 Python 功能的影响**: - `nis` 模块非核心功能,禁用后不影响大多数应用(如 Web 开发、科学计算等)。 - 仅在需要访问 NIS 服务器时需修复此问题。 --- ### **错误总结表** | 错误现象 | 原因 | 解决方案 | |------------------------------|-------------------------------|------------------------------| | `Failed to build module: nis` | `libnsl-dev` 未安装 | 安装 `libnsl-dev` | | | 系统不支持 NIS | 添加 `--disable-nis` 选项 | --- ### **操作示例** ```bash # 安装依赖并重新编译 sudo apt install libnsl-dev -y cd /home/gcat/Python-3.6.4 make clean ./configure --enable-optimizations make -j $(nproc) sudo make install ``` --- 若仍有问题,请检查 `config.log` 中关于 `nis` 的具体错误信息,或提供更多日志片段以进一步分析!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值