记一次在CentOS系统搭建python3环境

  首先,查看linux系统类型和版本:参考:查看linux系统类型和版本

  默认Centos7中是有python安装的,但是是2.7版本,实际上这几个文件之间是有依赖关系的。在ls 后面加个 -al参数,如下:

[[email protected] bin]# cd /usr/bin

  [[email protected] 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

  [[email protected] bin]#


  备份第一个python,使用如下命令:

[[email protected] bin]# mv python python.bak

  在Centos 7上创建一个目录吧。一般选择的是/usr/local里面的,如下命令:

[[email protected] bin]# mkdir /usr/local/python3

目录创建好了,我们就cd切换进去就好了。

[[email protected] bin]# cd /usr/local/python3

接下来我们要下载python把源码下载到这个目录下就OK,命令如下:

[[email protected] python3]# wget https://www.python.org/ftp/python/3.6.6/Python-3.6.6.tgz

等待下载完成之后会在当前目录下出现一个tgz包,命令解压这个包到当前目录就可以:

#解压命令
[[email protected] python3]# tar -xvf Python-3.6.6.tgz 
#解压完成后,查看目录下文件[[email protected] 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

就要开始安装了,因为下载的包是未编译的,我们需要编译一下。

进入文件目录:

[[email protected] python3]# cd Python-3.6.3/
[[email protected] Python-3.6.3]# 

把python的安装目录指定一下,这样的话,里面的一些bin目录、lib目录就都会存放在这个目录下面。如果不指定这个安装目录的话,最后python的安装文件将分散到linux的默认目录,不在一块。我们指定安装目录,以后卸载的话直接删除目录就可以干净卸载了。

如下命令:

[[email protected] Python-3.6.3]# ./configure --prefix=/usr/local/python3Dir

现在我们当前目录还是在/usr/local/python3/Python-3.6.3,执行如下命令:

[[email protected] Python-3.6.3]# make

然后出来一大堆代码,等它执行完毕。接着输入以下命令:

[[email protected] Python-3.6.3]# make install

又是一大堆代码,执行完毕之后,我们就可以切换到/usr/local/python3Dir目录下去查看了。

[[email protected] Python-3.6.3]# cd /usr/local/python3Dir/
[[email protected] 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
[[email protected] python3Dir]# 

接下来我们还有一点善后工作。切换到 /usr/bin目录下面吧:

[[email protected] python3Dir]# cd /usr/bin#然后输入以下命令 ,创建一个软链接
[[email protected] bin]# ln -s /usr/local/python3Dir/bin/python3 /usr/bin/python

因为yum依赖原来的python,所以这样修改后yum命令会出问题

1、在执行yum命令时忽然发现出现以下报错:

# yum list

File "/usr/bin/yum", line 30

except 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"即可。

我们查看一下链接情况:

[[email protected] 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
[[email protected] bin]# 

然后查看一下当前的python版本

[[email protected] bin]# python -V
Python 3.6.6
[[email protected] bin]# 

然后来个hello world测试一下:

先输入python进入,然后写代码:

[[email protected] 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()
[[email protected] 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

[[email protected]_71_251_centos python3Dir]# cd /usr/bin/
[[email protected]_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
[[email protected]_71_251_centos bin]# cp pip pip3
[[email protected]_71_251_centos bin]# vi pip3

#!/usr/bin/python2改成#!/usr/bin/python3

from pip._internal import main改成from pip import main(版本号为8.0.2的时候需要)
[[email protected]_71_251_centos bin]# pip -V
pip 18.1 from /usr/lib/python2.7/site-packages/pip (python 2.7)
[[email protected]_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

[[email protected]_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 readlinepip3 install gnureadlin

参考:http://www.bubuko.com/infodetail-2766506.html

readline模块终于安装成功了,然后测试一下python3的命令行无法使用退格键、方向键的问题,

经测试,可以使用退格键和方向键了,回车也没有异常了

ok,我们终于完成了整个python3环境的安装。

原文地址:https://www.cnblogs.com/XiaoyangBoke/p/10037362.html

时间: 2024-08-27 22:16:55

记一次在CentOS系统搭建python3环境的相关文章

RedHat/CentOs系统搭建lnmp环境

1.用yum安装系统lib库 yum -y install gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2f

CentOS下搭建LAMP环境详解

前言:在这里将介绍如何在CentOS下搭建LAMP环境(全部使用源码编译安装),用于web服务器开发. •LAMP: Linux + Apache + PHP + Mysql. •系统: CentOS 6.5,32位. CentOS安装 我选取了32位的CentOS 6.5这个Linux系统,安装过程也很简单,不再过多叙述,只稍微介绍一下我的分区情况: 分区名  大小 /boot  200MB /swap  2GB(不大于物理分区即可) /  20GB /home 剩余空间 Apache编译安装

一、记一次失败的 CAS 搭建 之 环境配置

========================================================================================================= Setp1:安装JDK.Tomcat.以及相关关联::参考:http://jingyan.baidu.com/article/8065f87fcc0f182330249841.html ===================================================

CentOS系统搭建Nginx负载均衡

一.关于CentOS系统介绍 CentOS(Community Enterprise Operating System,中文意思是:社区企业操作系统)是Linux发行版之一,它是来自于Red Hat Enterprise Linux依照开放源代码规定释出的源代码所编译而成.基于Red Hat持续升级,和对已知BUG修复,所以CentOS更多用于搭建大型企业级服务器.目前较新版本为7.0,本文使用CentOS7 64bit进行搭建系统负载均衡. 二.安装VMWare VMWare (Virtual

Net分布式系统之二:CentOS系统搭建Nginx负载均衡

一.关于CentOS系统介绍 CentOS(Community Enterprise Operating System,中文意思是:社区企业操作系统)是Linux发行版之一,它是来自于Red Hat Enterprise Linux依照开放源代码规定释出的源代码所编译而成.基于Red Hat持续升级,和对已知BUG修复,所以CentOS更多用于搭建大型企业级服务器.目前较新版本为7.0,本文使用CentOS7 64bit进行搭建系统负载均衡. 二.安装VMWare VMWare (Virtual

Centos系统搭建ror平台搭建

本文系统Centos6.5 x64 Ruby On Rails是一个用Ruby语言写的开源Web框架,和J2EE,PHP等类似.Ruby On Rails是一个非常优美的Web开发框架,并且融入了敏捷开发的精髓:约定大于配置.你会发现,它真的是一个非常优美的框架!今天我们介绍如何在Centos下搭建Ruby On Rails开发环境. Tips: Ruby Version Manager,Ruby版本管理器,包括Ruby的版本管理和Gem库管理(gemset).目前支持Ruby的大多数版本,有

CentOS系统搭建Ruby On Rails平台

本文系统CentOS6.5 x64 Ruby On Rails是一个用Ruby语言写的开源Web框架,和J2EE,PHP等类似.Ruby On Rails是一个非常优美的Web开发框架,并且融入了敏捷开发的精髓:约定大于配置.你会发现,它真的是一个非常优美的框架!今天我们介绍如何在 Centos下搭建Ruby On Rails开发环境. Tips: Ruby Version Manager,Ruby版本管理器,包括Ruby的版本管理和Gem库管理(gemset).目前支持Ruby的大多数版本,有

windows7 64位系统安装VMware Centos 64位系统搭建开发环境

一.概述 windows是我们最常用的工作系统,Linux开发很多人通常是在windows下安装虚拟机,然后在虚拟机中安装Linux.本文主要记录在搭建开发环境的过程中遇到的问题以及解决方法. 博主所用环境: 电脑:带无线上网的笔记本 主机操作系统:Windows 7 Ultimate, 64-bit 6.1.7601, Service Pack 1 VMware:VMware? Workstation 9.0.0 build-812388 Linux:CentOS 6.4(Final) 64-

CentOS 7搭建LAMP环境上线PHPMyAdmin系统

一.安装Apache服务 关于安装Apache详细配置及原理概述请参考:CentOS 7.4搭建Apache网站服务 [[email protected] ~]# mount /dev/cdrom /mnt/ <!--挂载LAMP光盘--> [[email protected] ~]# cp /mnt/* /usr/src/ <!--将mnt目录下的程序包拷贝到/usr/src/--> [[email protected] ~]# mount /dev/cdrom /mnt/ &l