Python3的安装

1.安装依赖环境

Python3在安装的过程中可能会用到各种依赖库,所以在正式安装Python3之前,需要将这些依赖库先行安装好。

yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel

2. 下载Python3源代码

下载Python3的源代码有两种方式,一种是在它的官网下载,网址如下:

https://www.python.org/downloads/source/

[图片]

另外一种方式是通过wget直接下载,如以下命令:

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

3. 创建安装目录

安装目录可依个人喜好创建,比如在此创建在 /usr/local/python3

mkdir -p /usr/local/python3

4. 解压源码包

将第2步下载到的源码包进行解压,命令为:

tar -zxvf Python-3.6.1.tgz

5. 编译源码

先进入解压后源码包的目录,再进行配置:

cd Python-3.6.1
./configure --prefix=/usr/local/python3

之后再编译,然后再安装:

make
make install

6. 建立Python3的软链接

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

7. 将/usr/local/python3/bin加入PATH

编辑bash_profile进行修改环境变量:

vim ~/.bash_profile

在PATH变量下将Python3的启动目录添加进去:

# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi # User specific environment and startup programs PATH=$PATH:$HOME/bin:/usr/local/python3/bin export PATH

改动完毕之后,按Esc,再输入:wq进行保存退出。

8. 检查Python3及Pip3是否正常可用

执行如下命令(注意:V是大写的V),如果看到的结果一致的话,说明Python3已经成功安装。

[alvin@VM_0_16_centos ~]$ python3 -V
Python 3.6.1
[alvin@VM_0_16_centos ~]$ pip3 -V
pip 9.0.1 from /usr/local/lib/python3.6/site-packages (python 3.6)

避坑指南

其实,对于Python3的安装,网络上有太多的帖子了,步骤其实都大同小异。但是,在真正动手安装之后,或多或少都会遇到一些麻烦,特别是对新手而言。下面良许就列举一些常见的坑:

坑1:configure: error: no acceptable C compiler found in $PATH

这个问题就比较简单,就是缺少gcc编译环境。将gcc安装上即可:

yum install -y gcc

当然除此之外,采用源码安装的方式也可以。

坑2:zipimport.ZipImportError: can’t decompress data

这种问题就是因为缺少zlib 的相关工具包导致的,将相关依赖包装上即可:

yum -y install zlib*

安装之后再重新编译源码,即可解决。

坑3:pip3: Can't connect to HTTPS URL because the SSL module is not available

这个问题是因为在./configure过程中,如果没有加上–with-ssl参数时,默认安装的软件涉及到ssl的功能不可用,刚好pip3过程需要ssl模块,而由于没有指定,所以该功能不可用。解决办法如下:

cd Python-3.6.2
./configure --with-ssl
make
sudo make install

坑4:Multilib version problems

这个很明显了,就是同一个库有多个版本。把多余的版本删除了就好。

首先查询已有的版本(以openssl为例,冲突哪个查哪个)

# rpm -qa | grep openssl
openssl-devel-1.0.0-27.el6_4.2.x86_64
openssl-1.0.0-27.el6_4.2.x86_64
openssl-1.0.0-27.el6_4.2.i686

可以看到系统里安装了openssl-1.0.0-27.el6_4.2.x86_64和openssl-1.0.0-27.el6_4.2.i686两个版本的openssl,我们留下x86的版本即可:

rpm --erase --nodeps openssl-1.0.0-27.el6_4.2.i686

再更新一下openssl:

# yum update "openssl*"

再查询一下openssl,问题解决!

# rpm -qa | grep openssl
openssl-devel-1.0.1e-16.el6_5.7.x86_64
openssl-1.0.1e-16.el6_5.7.x86_64

公众号:良许Linux

有收获?希望老铁们来个三连击,给更多的人看到这篇文章

Linux下Python3.6的安装及避坑指南的更多相关文章

  1. linux下python3源码安装及卸载

    Linux下Python3的源码编译安装和卸载方法 [日期:2019-06-21] 来源:博客园  作者:wuli潇萧 [字体:大 中 小]     (一)Linux下软件的源码编译安装和卸载方法 L ...

  2. Linux下Python3源码安装

    1.下载 wget https://www.python.org/ftp/python/3.7.4/Python-3.7.4.tgz 2.解压 tar -xzvf Python-3.7.4.tgz 3 ...

  3. OpenLDAP 2.4.44 安装部署避坑指南

    写在前面: 有关openLDAP的部署文档在网上随意能找到很多,但是最近用到才发现网上的教程多数是旧版的用法,例如"/etc/openldap/slapd.conf “早已弃用,更有甚者直接 ...

  4. windows 安装 celery 避坑指南,看这篇就够了

  5. Linux下apache+phppgadmin+postgresql安装配置

    Linux下apache+phppgadmin+postgresql安装配置 操作系统:CentOS 安装包:httpd(首选yum), php(包括php以及php-pgsql,php-mbstri ...

  6. Linux下的网络远程安装

    Linux下的网络远程安装 1.用RHEL6.5光盘安装第一台服务器 2.在第一台服务器上配置YUM服务器 先创建一个挂载 #mount #umount /dev/cdrom #mkdir /mnt/ ...

  7. Linux下指定版本编译安装LAMP

    说明: 操作系统:CentOS 6.5 64位 需求: 编译安装LAMP运行环境 各软件版本如下: MySQL:mysql-5.1.73 Apache:httpd-2.2.31 PHP:php-5.2 ...

  8. 【转】Linux下XenServer管理工具安装

    转载文章 - Linux下XenServer管理工具安装 Xen-Server 6.5 虚拟机安装Linux系统 vmware安装ubuntu12.04嵌套安装xen server(实现嵌套虚拟化) ...

  9. linux下.run文件的安装与卸载

    linux下.run文件的安装与卸载   .run文件的安装很简单,只需要为该文件增加可执行属性,即可执行安装 以 virtualbox 的安装文件 virtualbox-3.1.6-59338-Li ...

随机推荐

  1. ES6语法学习(一)-let和const

    1.let 和 const 变量提升: 在声明变量或者函数时,被声明的变量和函数会被提升到函数最顶部: 但是如果声明的变量或者函数被初始化了,则会失去变量提升: 示例代码: param2 = &quo ...

  2. ansibleAPI怎么做异步

    在直接使用 ansible 时候有-B -p 参数可以启用异步操作,然后返回一个 job_id 值 [root@master ansible]# ansible node1 -B -P -m yum ...

  3. VM 添加硬盘,分区,挂载

    添加硬盘后使用>df -h 命令 VM安装linux系统之后,发现我们的硬盘不够,可通过两种方式添加硬盘 方式一:选择虚拟机,点击右键,设置,点击硬盘,点击添加,输入新添加的硬盘大小,保存与虚拟 ...

  4. 什么?Java9这些史诗级更新你都不知道?Java9特性一文打尽!

    「MoreThanJava」 宣扬的是 「学习,不止 CODE」,本系列 Java 基础教程是自己在结合各方面的知识之后,对 Java 基础的一个总回顾,旨在 「帮助新朋友快速高质量的学习」. 当然 ...

  5. three.js 制作逻辑转体游戏(下)

    上一篇已经对绕非定轴转动有所了解,这篇郭先生继续说一说逻辑转体游戏的制作,这部分我们同样会遇到一些小问题,首先是根据数据渲染陷阱和目标区域,然后是对可以转动的判定,最后是获胜的判定. 1. 根据数据渲 ...

  6. JavaScript学习系列博客_8_JavaScript中的关系运算符、赋值运算符

    关系运算符 - 关系运算符用来比较两个值之间的关系的 >.<.<=.>= 先说这四个.如果关系成立则返回true,关系不成立则返回false. - 如果比较的两个值是非numb ...

  7. oracle replace的用法

    表数据里面有些数据是有换行或者特殊字符的,想要去掉,但是几千条记录要一条条改基本不可能. 后来想到了replace这个函数,具体用法如下: update 表1 t set t.列1=replace(( ...

  8. python 列表和字典的引用与复制(copy)

    列表或字典的引用: 引用针对变量的时候,传递引用后,对引用后的对象的值进行改变是不会影响到原值的:而列表不一样如: spam =42 cheese = spam spam =100 print(spa ...

  9. 焦大:seo该研究用户需求还是搜索算法

    http://www.wocaoseo.com/thread-62-1-1.html 上一篇博客我写了用户需求点是做seo排名最首要关注的东西,其实这个我在以前也一直说的,seo有两大核心,一个是检索 ...

  10. 焦大:seo思维光年(上)检索的价值观

    http://www.wocaoseo.com/thread-55-1-1.html 检索的价值观是什么?最近很多人咨询我这个问题,因为在百度上根本找不到相关的资料,其实这个东西也是我自己总结的,比如 ...