第1章 升级python

1.1 下载新版本

进入 Python下载页面,选择需要的版本。
这里,我选择的版本是 3.5.2 。

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

1.2 解压缩

下载完成之后,进行解压缩:

tar -zxvf Python-3.5.2.tgz

1.3 安装配置

进入解压缩后的目录,安装配置:

cd Python-3.5.2/
./configure

执行 ./configure 时,如果报错:
configure: error: no acceptable C compiler found in $PATH
说明没有安装合适的编译器。这时,需要安装/升级 gcc 及其它依赖包。

yum install make gcc gcc-c++ zlib* openssl* libffi-devel -y

zlib*是编译安装python3.6以上版本的时候用到。

完成之后,重新执行:

./configure

编译 & 安装
配置完成之后,就可以编译了:

make

漫长的等待……完成后,安装:

make install

验证
安装成功以后,就可以查看 Python 的版本了:

python -V
Python 2.7.5
python3 -V
Python 3.5.2

一个是旧版本 2.x,另外一个是新版本 3.x。
注意:在 /usr/local/bin/ 下有一个 python3 的链接,指向 bin 目录下的 python 3.5。

1.4 设置 3.x 为默认版本

查看 Python 的路径,在 /usr/bin 下面。可以看到 python 链接的是 python 2.7,所以,执行 python 就相当于执行 python 2.7。

ls -al /usr/bin | grep python
-rwxr-xr-x.  1 root root      11216 12月  1 2015 abrt-action-analyze-python
lrwxrwxrwx.  1 root root          7 8月  30 12:11 python -> python2
lrwxrwxrwx.  1 root root          9 8月  30 12:11 python2 -> python2.7
-rwxr-xr-x.  1 root root       7136 11月 20 2015 python2.7

将原来 python 的软链接重命名:

mv /usr/bin/python /usr/bin/python.bak

将 python 链接至 python3:

ln -s /usr/local/bin/python3 /usr/bin/python

这时,再查看 Python 的版本:

python -V
Python 3.5.2

输出的是 3.x,说明已经使用的是 python3了。
配置 yum
升级 Python 之后,由于将默认的 python 指向了 python3,yum 不能正常使用,需要编辑 yum 的配置文件:

vi /usr/bin/yum

同时修改:

vi /usr/libexec/urlgrabber-ext-down

将 #!/usr/bin/python 改为 #!/usr/bin/python2.7,保存退出即可。

第2章 Python 解决命令行删除、退格乱码问题

安装了python 在命令行界面无法进行删除、退格

2.1 安装readline模块

两种方式:

yum install -y readline-devel  readline

或者
下载文件

https://pypi.python.org/pypi/readline
tar -xvf readline-6.2.4.1.tar.gz
cd readline-6.2.4.1
python setup.py install

2.2 第二种方法安装时候报错

/usr/bin/ld: cannot find -lncurses

有三种可能性
1 系统没有安装相对应的lib
2 相对应的lib版本不对
3 lib(.so档)的symbolic link 不正确,没有连结到正确的函式库文件(.so)

locate发现本地有libncurses的库包

修改为

重新安装后成功。
如果先安装了python需要重新编译一次 才生效
进入python安装目录 依次执行

./configure
make && make install

2.3 附:链接库相关

Linux 系统上有两类根本不同的 Linux 可执行程序。
第一类是静态链接的可执行程序。静态可执行程序包含执行所需的所有函数 — 换句话说,它们是“完整的”。因为这一原因,静态可执行程序不依赖任何外部库就可以运行。
第二类是动态链接的可执行程序
可以用 ldd 命令来确定某一特定可执行程序是否为静态链接的
如果动态可执行程序不包含运行所需的所有函数,动态装入器(dynamic loader)负责装入动态链接的可执行程序运行所需的共享库
动态装入器找到共享库要依靠两个文件 — /etc/ld.so.conf 和 /etc/ld.so.cache
①配置/etc/ld.so.conf
②ldconfig 将/etc/ld.so.conf更新到/etc/ld.so.cache
③动态装入器通过/etc/ld.so.cache加载库目录

共享库查看

# ldconfig -p | less

某些情况下,如果要指示动态装入器首先检查某个目录,请将 LD_LIBRARY_PATH 变量设置成您希望搜索的目录。多个路径之间用冒号分隔;例如:

# export LD_LIBRARY_PATH="/usr/lib/old:/opt/lib"

导出 LD_LIBRARY_PATH 后,如有可能,所有从当前 shell 启动的可执行程序都将使用 /usr/lib/old 或 /opt/lib 中的库,如果仍不能满足一些共享库相关性要求,则转回到 /etc/ld.so.conf 中指定的库。

CentOS升级Python详解相关推荐

  1. python input与返回值-Python 详解基本语法_函数_返回值

    Python 详解基本语法 概要: 函数的返回值是函数重要的组成部分.函数的根本在于实现程序的部分功能,所以很多时候我们需要将函数执行后的结果返回给程序再由程序作出进一步的操作.可以说是函数的返回值令 ...

  2. python选择排序从大到小_经典排序算法和Python详解之(一)选择排序和二元选择排序...

    本文源自微信公众号[Python编程和深度学习]原文链接:经典排序算法和Python详解之(一)选择排序和二元选择排序,欢迎扫码关注鸭! 扫它!扫它!扫它 排序算法是<数据结构与算法>中最 ...

  3. CentOS 开机启动详解

    优化centos开机启动项 2011年06月14日 7:21 /etc/inittab文件,把 代码: id:5:initdefault:这一行,修改成 代码: id:3:initdefault:保存 ...

  4. Linux服务详解(主要基于RedHat系的及Centos默认服务详解)(综合整理)

    转自:http://blog.csdn.net/jj198981/article/details/7605558 acpid ACPI(全称 Advanced Configuration and Po ...

  5. CentOS 6安装详解及PXE 安装

    Linux系统安装详解 注: Tab键 编辑选项  esc键可以返回去 vmlinuz  initrd=initrd.img  后面加 rescue相当于进入救援模式 在 basic video 按e ...

  6. qpython能使用json吗l_[python] 详解Python在使用JSON时需要注意的编码问题

    Python 中的字符编码 在 Python3 中, 字符 在内存中是使用 Unicode 存储的, 常规的字符使用 两个字节 表示, 一些很生僻的字符就需要 四个字节. 默认使用 Unicode 存 ...

  7. map函数的用法python,详解Python map函数及Python map()函数的用法

    python map函数 map()函数 map()是 Python 内置的高阶函数,它接收一个函数 f 和一个 list,并通过把函数 f 依次作用在 list 的每个元素上,得到一个新的 list ...

  8. centos 安装mysql-proxy_详解在Centos 5.2下安装最新Mysql Proxy LUA教程

    在Centos 5.2下安装***Mysql Proxy LUA教程是本文要介绍的内容,主要是来了解Mysql Proxy LUA的安装过程,文章中有很详细的讲解,具体内容来看本文详解. mysql ...

  9. 名片管理系统python详解_详解Python做一个名片管理系统

    详解Python做一个名片管理系统 来源:中文源码网    浏览: 次    日期:2019年11月5日 [下载文档:  详解Python做一个名片管理系统.txt ] (友情提示:右键点上行txt文 ...

最新文章

  1. 关于 Android 进程保活,你所需要知道的一切
  2. Javascript(JS)中的大括号{}和中括号[]详解
  3. 第一个项目GeoQuiz开发总结
  4. Qt+VS2013编译报错:'cl' 不是内部或外部命令,也不是可运行的程序
  5. Git for Windows之推送本地版本库到远程仓库
  6. 当SAP云平台account的service Marke place里找不到Machine Learning服务该怎么办
  7. Linux一个命令创建多个目录:seq命令
  8. 基于区块链技术的数据资产管理机制研究
  9. JavaScript数字精度丢失的一些问题
  10. 从零开始学androidIntent初步.四十.
  11. 【数据分析软件】【Weka】第一课:超easy安装教程
  12. 情人节程序员用HTML网页表白【表白对话】 HTML5七夕情人节表白网页源码 HTML+CSS+JavaScript
  13. Stata:各类盈余管理指标Stata实现方法
  14. 互联网经典商战TOP 10
  15. function里面的两个参数是什么意思?
  16. Oracle EBS Interface/API(25) - Lookups API
  17. 大学生计算机适合用苹果笔记本吗,2019学生党笔记本推荐 苹果笔记本适合大学生吗...
  18. macOS下移动硬盘无法挂载且硬盘灯一直闪烁的解决方法
  19. 关于电脑怎么连接隐藏的无线WiFi信号
  20. C语言实现一元多项式相加

热门文章

  1. MySQL的连接方式
  2. 小程序源码:微信也可以发闪照了闪照制作生成微信小程序源码下载,自定义闪照时间
  3. [第三章] 深入理解计算机系统第三版 家庭作业参考答案
  4. GBK UTF-8 ASCLL URL编码
  5. 计算机毕业设计开题报告的撰写步骤和内容要求
  6. 用HhYii写一个接口吧!
  7. spring security配置详解
  8. cubieboard + busybox 打造mini系统
  9. photoshop 教程
  10. [230507]托福听力真题TPO66词汇 |无重复|20:50~21:55+8:00~8:30