记一次在CentOS系统搭建python3环境
首先,查看linux系统类型和版本:参考:查看linux系统类型和版本
默认Centos7中是有python安装的,但是是2.7版本,实际上这几个文件之间是有依赖关系的。在ls 后面加个 -al参数,如下:
[root@localhost bin]# cd /usr/bin
[root@localhost bin]# ls -al python* lrwxrwxrwx. 1 root root 33 Oct 21 12:30 python -> python2 lrwxrwxrwx. 1 root root 9 Oct 19 23:55 python2 -> python2.7 -rwxr-xr-x. 1 root root 7136 Aug 4 08:40 python2.7 [root@localhost bin]#备份第一个python,使用如下命令:
[root@localhost bin]# mv python python.bak
[root@localhost bin]# mkdir /usr/local/python3
目录创建好了,我们就cd切换进去就好了。
[root@localhost bin]# cd /usr/local/python3
接下来我们要下载python把源码下载到这个目录下就OK,命令如下:
[root@localhost python3]# wget https://www.python.org/ftp/python/3.6.6/Python-3.6.6.tgz
等待下载完成之后会在当前目录下出现一个tgz包,命令解压这个包到当前目录就可以:
#解压命令
[root@localhost python3]# tar -xvf Python-3.6.6.tgz
#解压完成后,查看目录下文件
[root@localhost python3]# ll
drwxr-xr-x. 17 501 501 4096 Oct 21 12:22 Python-3.6.6
-rw-r--r--. 1 root root 22673115 Oct 3 15:47 Python-3.6.6.tgz
就要开始安装了,因为下载的包是未编译的,我们需要编译一下。
进入文件目录:
[root@localhost python3]# cd Python-3.6.3/
[root@localhost Python-3.6.3]#
把python的安装目录指定一下,这样的话,里面的一些bin目录、lib目录就都会存放在这个目录下面。如果不指定这个安装目录的话,最后python的安装文件将分散到linux的默认目录,不在一块。我们指定安装目录,以后卸载的话直接删除目录就可以干净卸载了。
如下命令:
[root@localhost Python-3.6.3]# ./configure --prefix=/usr/local/python3Dir
现在我们当前目录还是在/usr/local/python3/Python-3.6.3,执行如下命令:
[root@localhost Python-3.6.3]# make
然后出来一大堆代码,等它执行完毕。接着输入以下命令:
[root@localhost Python-3.6.3]# make install
又是一大堆代码,执行完毕之后,我们就可以切换到/usr/local/python3Dir目录下去查看了。

[root@localhost Python-3.6.3]# cd /usr/local/python3Dir/
[root@localhost python3Dir]# ll
total 0
drwxr-xr-x. 2 root root 245 Oct 21 12:26 bin
drwxr-xr-x. 3 root root 24 Oct 21 12:26 include
drwxr-xr-x. 4 root root 63 Oct 21 12:26 lib
drwxr-xr-x. 3 root root 17 Oct 21 12:26 share
[root@localhost python3Dir]#

接下来我们还有一点善后工作。切换到 /usr/bin目录下面吧:
[root@localhost python3Dir]# cd /usr/bin
#然后输入以下命令 ,创建一个软链接
[root@localhost bin]# ln -s /usr/local/python3Dir/bin/python3 /usr/bin/python
因为yum依赖原来的python,所以这样修改后yum命令会出问题
1、在执行yum命令时忽然发现出现以下报错:
# yum listFile "/usr/bin/yum", line 30except KeyboardInterrupt, e: ^SyntaxError: invalid syntax原因:
这是因为yum采用Python作为命令解释器,这可以从/usr/bin/yum文件中第一行#!/usr/bin/python发现。而python版本之间兼容性不太好,使得2.X版本与3.0版本之间存在语法不一致问题。而CentOS 7自带的yum采用的是python2.7,当系统将python升级到3后,出现语法解释错误。
解决办法:
一是升级yum。
二是修改yum的解释器为旧版本python2.7,即将连接文件/usr/bin/python连接回/usr/bin/python2.7。治标不治本,不推荐。
三是在设置里更改解释器设置,即修改/usr/bin/yum文件,指定使用python2.7作为yum的解释器:
# vi /usr/bin/yum将第一行"#!/usr/bin/python" 改为 "#!/usr/bin/python2"即可。
安装软件时又会出现另一种报错
Downloading packages: File "/usr/libexec/urlgrabber-ext-down", line 28 except OSError, e: ^SyntaxError: invalid syntax# vi /usr/libexec/urlgrabber-ext-down
将第一行"#!/usr/bin/python" 改为 "#!/usr/bin/python2"即可。
我们查看一下链接情况:
[root@localhost bin]# ll -a python*
lrwxrwxrwx. 1 root root 33 Oct 21 12:30 python -> /usr/local/python3Dir/bin/python3
lrwxrwxrwx. 1 root root 9 Oct 19 23:55 python2 -> python2.7
-rwxr-xr-x. 1 root root 7136 Aug 4 08:40 python2.7
lrwxrwxrwx. 1 root root 7 Oct 19 23:55 python.bak -> python2
[root@localhost bin]#
然后查看一下当前的python版本
[root@localhost bin]# python -V
Python 3.6.6
[root@localhost bin]#
然后来个hello world测试一下:
先输入python进入,然后写代码:

[root@localhost bin]# python
Python 3.6.3 (default, Oct 21 2017, 12:21:40)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-16)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> print("Hello World")
Hello World
>>> exit()
[root@localhost bin]#

python安装完成,但是有点小问题,发现python命令行无法使用退格键、方向键。
需要安装Python 中的 readline模块
pip install readline

此处pip属于python2的,需要安装并升级python3的pip
安装pip以及setuptools
wget --no-check-certificate https://pypi.python.org/packages/source/s/setuptools/setuptools-19.6.tar.gz#md5=c607dd118eae682c44ed146367a17e26
tar -zxvf setuptools-19.6.tar.gz
cd setuptools-19.6
python3 setup.py build
python3 setup.py install
报错:RuntimeError: Compression requires the (missing) zlib module
我们需要在linux中安装zlib-devel包,进行支持。
yum install zlib-devel
需要对python3.6进行重新编译安装。
cd /usr/local/python3/Python-3.6.6
make & make install
重新安装setuptools
python3 setup.py build
python3 setup.py install
2、安装pip
wget --no-check-certificate https://pypi.python.org/packages/source/p/pip/pip-8.0.2.tar.gz#md5=3a73c4188f8dbad6a1e6f6d44d117eeb
tar -zxvf pip-8.0.2.tar.gz
cd pip-8.0.2
python3 setup.py build
python3 setup.py install
如果没有意外的话,pip安装完成。
测试:

ImportError: cannot import name 'HTTPSHandler'
是缺少openssl的开发环境,我们继续安装
yum install openssl-devel
继续重新编译安装python3.6、setuptools和pip
[root@VM_71_251_centos python3Dir]# cd /usr/bin/
[root@VM_71_251_centos bin]# ls -la pip*
-rwxr-xr-x 1 root root 215 Nov 29 13:51 pip
-rwxr-xr-x 1 root root 215 Nov 29 13:51 pip2
-rwxr-xr-x 1 root root 215 Nov 29 13:51 pip2.7
[root@VM_71_251_centos bin]# cp pip pip3
[root@VM_71_251_centos bin]# vi pip3
#!/usr/bin/python2改成#!/usr/bin/python3
from pip._internal import main改成from pip import main(版本号为8.0.2的时候需要)
[root@VM_71_251_centos bin]# pip -V
pip 18.1 from /usr/lib/python2.7/site-packages/pip (python 2.7)
[root@VM_71_251_centos bin]# pip3 -V
pip 8.0.2 from /usr/local/python3Dir/lib/python3.6/site-packages/pip-8.0.2-py3.6.egg (python 3.6)
升级pip:pip3 install --upgrade pip
[root@VM_71_251_centos bin]# pip3 -V
pip 18.1 from /usr/local/python3Dir/lib/python3.6/site-packages/pip (python 3.6)
再来安装readline模块
python3 -m pip install readline
又有新的错误:

发现错误:cannot find -lncurses
那就去安装ncurses:yum install ncurses-devel
安装ncurses完成后,再来安装readline:

然后测试一下python3的命令行无法使用退格键、方向键的问题,
经测试,可以使用退格键和方向键了,但是回车就异常了,如下所示:
*** Error in `python3': munmap_chunk(): invalid pointer: 0x00007f848cee20a0 ***
======= Backtrace: =========
/lib64/libc.so.6(+0x7f5e4)[0x7f848c0a15e4]
python3(PyOS_Readline+0xec)[0x5cc48c]
python3[0x4473e0]
python3[0x448d28]
python3(PyTokenizer_Get+0x9)[0x449b69]
python3[0x44596d]
python3(PyParser_ASTFromFileObject+0x89)[0x427909]
python3[0x427b1b]
python3(PyRun_InteractiveLoopFlags+0x76)[0x427e46]
python3(PyRun_AnyFileExFlags+0x3c)[0x427fcc]
python3(Py_Main+0xc44)[0x43baa4]
python3(main+0x162)[0x41d8b2]
/lib64/libc.so.6(__libc_start_main+0xf5)[0x7f848c044445]
python3[0x41d970]
======= Memory map: ========
00400000-00670000 r-xp 00000000 fd:01 539422 /usr/local/python3Dir/bin/python3.6
0086f000-00870000 r--p 0026f000 fd:01 539422 /usr/local/python3Dir/bin/python3.6
00870000-008d4000 rw-p 00270000 fd:01 539422 /usr/local/python3Dir/bin/python3.6
008d4000-00905000 rw-p 00000000 00:00 0
01b0a000-01bd4000 rw-p 00000000 00:00 0 [heap]
7f848524c000-7f8485261000 r-xp 00000000 fd:01 287503 /usr/lib64/libgcc_s-4.8.5-20150702.so.1
7f8485261000-7f8485460000 ---p 00015000 fd:01 287503 /usr/lib64/libgcc_s-4.8.5-20150702.so.1
7f8485460000-7f8485461000 r--p 00014000 fd:01 287503 /usr/lib64/libgcc_s-4.8.5-20150702.so.1
7f8485461000-7f8485462000 rw-p 00015000 fd:01 287503 /usr/lib64/libgcc_s-4.8.5-20150702.so.1
7f8485462000-7f8485487000 r-xp 00000000 fd:01 265991 /usr/lib64/libtinfo.so.5.9
7f8485487000-7f8485687000 ---p 00025000 fd:01 265991 /usr/lib64/libtinfo.so.5.9
7f8485687000-7f848568b000 r--p 00025000 fd:01 265991 /usr/lib64/libtinfo.so.5.9
7f848568b000-7f848568c000 rw-p 00029000 fd:01 265991 /usr/lib64/libtinfo.so.5.9
7f848568c000-7f84856b2000 r-xp 00000000 fd:01 265981 /usr/lib64/libncurses.so.5.9
7f84856b2000-7f84858b1000 ---p 00026000 fd:01 265981 /usr/lib64/libncurses.so.5.9
7f84858b1000-7f84858b2000 r--p 00025000 fd:01 265981 /usr/lib64/libncurses.so.5.9
7f84858b2000-7f84858b3000 rw-p 00026000 fd:01 265981 /usr/lib64/libncurses.so.5.9
查原因:
readline (6.2.4.1) :
The standard Python readline extension statically linked against the GNU readline library.
标准Python的readline扩展静态链接反对GNU readline库。
pip3 uninstall readline
pip3 install gnureadlin
参考:http://www.bubuko.com/infodetail-2766506.html
readline模块终于安装成功了,然后测试一下python3的命令行无法使用退格键、方向键的问题,
经测试,可以使用退格键和方向键了,回车也没有异常了
ok,我们终于完成了整个python3环境的安装。
记一次在CentOS系统搭建python3环境的更多相关文章
- CentOS下搭建LAMP环境详解
前言:在这里将介绍如何在CentOS下搭建LAMP环境(全部使用源码编译安装),用于web服务器开发. •LAMP: Linux + Apache + PHP + Mysql. •系统: CentOS ...
- Net分布式系统之二:CentOS系统搭建Nginx负载均衡
一.关于CentOS系统介绍 CentOS(Community Enterprise Operating System,中文意思是:社区企业操作系统)是Linux发行版之一,它是来自于Red Hat ...
- centos 下 搭建 php 环境
本文详细阐述在 Linux 系统中搭建 PHP 环境,由于 PHP 就是由 C 语言编写的,最初也是运行在 Linux 系统中,所以Linux 是 PHP 的最佳环境. 关于本文中使用到的软件,请点击 ...
- CentOS 7搭建LAMP环境(二)
前面已经讲过了CentOS 7下LAMP环境的配置过程,一台简单的WEB服务器已搭建完成,但后期在网站部署的过程中也许会碰到各种各样头疼的问题.下面我们来讲讲怎么解决这些问题,以及如何高效地管理服务器 ...
- Linux系统搭建Java环境【JDK、Tomcat、MySQL】一篇就够
前言:所有项目在完成开发后都会部署上线的,一般都是用Linux系统作为服务器的,很少使用Windows Server(大多数项目的开发都是在Windows桌面系统完成的),一般有专门负责上线的人员 ...
- 基于CentOS系统部署EPICS环境
1.虚拟机安装CentOS系统2.打开终端,以root账户登录3.进入/usr/local目录下,新建文件夹epics,并进入该文件夹4.在/usr/local/epics目录下,执行wget htt ...
- CentOS下安装python3环境及pypy环境
安装前基础环境 1. win7虚拟机CentOS7.6系统 2. 网络环境通过NAT方式 3. 已经配置到yum仓库并系统自带有python2.7 安装前准备 1. python3.6.5源码包:ht ...
- anyproxy学习4-Linux(Centos)搭建anyproxy环境
前言 anyproxy可以跨平台使用,前面第一篇是搭建在windows机器上,本篇讲如何在linux上搭建anyproxy环境,当然有mac的小伙伴也可以用mac去搭建一个环境. nodejs安装 a ...
- Centos系统下Lamp环境的快速搭建(超详细,转)
lamp的搭建对于初学者是一件很头疼的事情,所以借此机会把自己当初快速搭建linux+apche+mysql+php的方法分享大家希望能到你. 工具/原料 虚拟机及Centos操作系统 Linux基本 ...
随机推荐
- 新手C#异常的学习2018.08.07
异常是在程序执行期间出现的问题.C# 中的异常是对程序运行时出现的特殊情况的一种响应,比如尝试除以零. class Program { static void Main(string[] args) ...
- 数据库 alert.log 日志中出现 "[Oracle][ODBC SQL Server Wire Protocol driver][SQL Server] 'RECOVER'"报错信息
现象描述: (1).数据库通过调用透明网络实现分布式事务,但透明网关停用后,失败的分布式事务并未清理. (2).数据库 alert 日志 Thu Sep 06 06:53:00 2018 Errors ...
- 23-吝啬的国度(vector+深搜)
吝啬的国度 时间限制:1000 ms | 内存限制:65535 KB 难度:3 描述 在一个吝啬的国度里有N个城市,这N个城市间只有N-1条路把这个N个城市连接起来.现在,Tom在第S号城市, ...
- windows安装mysql-5.7压缩版详细教程
前言 今天安装mysql数据库,进入mysql官网,对于windows来说有两个版本的文件可下载,一是.msi安装文件,二是.biz压缩包.以前一直用安装文件进行安装,百试不爽.今天突然不想用安装文件 ...
- FasterRCNN目标检测实践纪实
首先声明参考博客:https://blog.csdn.net/beyond_xnsx/article/details/79771690?tdsourcetag=s_pcqq_aiomsg 实践过程主线 ...
- 如何求数字n的因数个数及因数和
我们有可能在某些数学题中会求到某个数的因数和,那我们怎么求呢? 因为我们知道任意一个合数都可以由两个或多个质数相乘得到,那么我们就先分解质因数吧 例:我们随便去一个数吧,嗯,就108了,好算... 我 ...
- Java程序设计19——类的加载和反射-Part-B
接下来可以随意提供一个简单的主类,该主类无须编译就可使用上面的CompileClassLoader来运行它. package chapter18; public class Hello { publi ...
- jquery.cookie 介绍 和 用法
1.依赖jQuery库 2.浏览器兼容性情况 3.下载 官方github:https://github.com/carhartl/jquery-cookie 4.使用 创建一个整站cookie $.c ...
- ViewController的属性
[ViewController的属性] 1.navigationItem,只读,只第一次引用的时候被创建. The first time the property is accessed, the U ...
- C#进阶系列——WebApi 异常处理解决方案(转)
出处:http://www.cnblogs.com/landeanfen/p/5363846.html 阅读目录 一.使用异常筛选器捕获所有异常 二.HttpResponseException自定义异 ...