手工安装Python3.4.6
手工安装Python3.4.6
仰望星空的伤心胖熊 发表于1年前
手工安装Python3.4.6
  • 发表于 1年前
  • 阅读 122
  • 收藏 0
  • 点赞 0
  • 评论 0

【腾讯云】新注册用户域名抢购1元起>>>   

摘要: Linux自带python2.6,yum直接升级,也仍然在2.x版本之内升级,所以这里手工安装。 部分描述来自网络。由于这个问题,在网上有很多作者写过,我也找不到原作者了,所以就不写原文作者了,如果作者发现有异议,可与本人联系。

安装开发库文件
编译Python只要有gcc编译器就足够了,但一些扩展模块需要额外的库,否则一些Python模块将不可用(比如Python的zlib模块需要zlib-devel,ssl模块需要openssl-devel)。用户可以根据需要,选择性的安装这些扩展模块。这里我们安装zlib、ssl和sqlite3的库文件。

   yum install zlib-devel openssl-devel sqlite-devel 

下载Python
目前最新版本为2.7.8。wget的过程可能会非常慢,可以先把包下载下来,再传上去。

  wget  https://www.python.org/ftp/python/3.4.6/Python-3.4.6.tgz


  
编译安装
为了方便管理,将Python安装到/usr/local/python路径下。

[root@soc yangnz]# ls
isoimages  logs  Python-3.4.6  Python-3.4.6.tgz
[root@soc yangnz]# cp Python-3.4.6.tgz /usr/local/python/
[root@soc yangnz]# cd /usr/local/python/
[root@soc python]# ls
Python-3.4.6.tgz
[root@soc Python-3.4.6]# tar -zxvf Python-3.4.6.tgz 
[root@soc Python-3.4.6]# cd Python-3.4.6
[root@soc Python-3.4.6]# ./configure --prefix=/usr/local/python
[root@soc Python-3.4.6]# make

[root@soc Python-3.4.6]# make install
……
            $ensurepip --root=/ ; \
    fi
Collecting setuptools
Collecting pip
Installing collected packages: setuptools, pip
Successfully installed pip-9.0.1 setuptools-28.8.0

 

替换系统自带Python
安装后,Python 3.4.6 的可执行文件位于/usr/local/python/Python-3.4.6。
先将系统自带的Python重命名为python2.6,再创建新的Python到/usr/bin目录下的符号链接。

[root@soc bin]# python --version
Python 2.6.6
[root@soc bin]# pwd
/usr/bin
[root@soc bin]# cp /usr/local/python/Python-3.4.6/python /usr/bin/python3.4
[root@soc bin]# cd /usr/bin
[root@soc bin]# ls python*
python  python2  python2.7  python3.4
[root@soc bin]# ln -sf python3.4 python
  -s = soft,意为软链接   -f = force,表示强制创建(使用前请备份之前存在文件)
[root@soc bin]# ll python
lrwxrwxrwx. 1 root root 9 2月  15 18:02 python -> python3.4
[root@soc bin]# python --version
Python 3.4.6

 

修正yum
现在,系统默认调用Python3.4.6,执行yum会出现如图四所示错误。

 [root@soc yangnz]# yum
  File "/usr/bin/yum", line 30
    except KeyboardInterrupt, e:
                            ^
SyntaxError: invalid syntax

解决方法:将/usr/bin/yum文件开头的第一行代码: 

#!/usr/bin/python

修改为:

#!/usr/bin/python2.6    //2.6为原来python版本

 

修改/usr/libexec/urlgrabber-ext-down错误

此时,使用yum 命令,可以正常使用了,但在后面使用yum具体升级部分组件的时候,发现了一些错误:

[root@CentOS-7 jdk1.8.0_121]# yum install perl-devel
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
正在解决依赖关系
--> 正在检查事务
---> 软件包 perl-devel.x86_64.4.5.16.3-291.el7 将被 安装
--> 正在处理依赖关系 systemtap-sdt-devel,它被软件包 4:perl-devel-5.16.3-291.el7.x86_64 需要
--> 正在处理依赖关系 perl(ExtUtils::ParseXS),它被软件包 4:perl-devel-5.16.3-291.el7.x86_64 需要
--> 正在处理依赖关系 perl(ExtUtils::MakeMaker),它被软件包 4:perl-devel-5.16.3-291.el7.x86_64 需要
--> 正在处理依赖关系 perl(ExtUtils::Installed),它被软件包 4

……

=======================================================================================================================
安装  1 软件包 (+7 依赖软件包)

总下载量:1.0 M
安装大小:3.1 M
Is this ok [y/d/N]: Y
Downloading packages:
  File "/usr/libexec/urlgrabber-ext-down", line 28
    except OSError, e:
                  ^
SyntaxError: invalid syntax
  File "/usr/libexec/urlgrabber-ext-down", line 28
    except OSError, e:
                  ^
SyntaxError: invalid syntax


由于用户取消而退出

查看/usr/libexec/urlgrabber-ext-down文件,发现它的配置里面也是直接调用的python:

[root@CentOS-7 jdk1.8.0_121]# cat /usr/libexec/urlgrabber-ext-down 
#! /usr/bin/python
……

改为:

[root@CentOS-7 jdk1.8.0_121]# cat /usr/libexec/urlgrabber-ext-down
#! /usr/bin/python2.7

改好后,就可以正常升级组件了

 

 

 

 

标签: centos6.5 python3.4 yum
  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 0
博文 12
码字总数 8658
×
仰望星空的伤心胖熊
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: