Linux下Python3.6的安装及避坑指南
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的安装及避坑指南的更多相关文章
- linux下python3源码安装及卸载
Linux下Python3的源码编译安装和卸载方法 [日期:2019-06-21] 来源:博客园 作者:wuli潇萧 [字体:大 中 小] (一)Linux下软件的源码编译安装和卸载方法 L ...
- 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 ...
- OpenLDAP 2.4.44 安装部署避坑指南
写在前面: 有关openLDAP的部署文档在网上随意能找到很多,但是最近用到才发现网上的教程多数是旧版的用法,例如"/etc/openldap/slapd.conf “早已弃用,更有甚者直接 ...
- windows 安装 celery 避坑指南,看这篇就够了
- Linux下apache+phppgadmin+postgresql安装配置
Linux下apache+phppgadmin+postgresql安装配置 操作系统:CentOS 安装包:httpd(首选yum), php(包括php以及php-pgsql,php-mbstri ...
- Linux下的网络远程安装
Linux下的网络远程安装 1.用RHEL6.5光盘安装第一台服务器 2.在第一台服务器上配置YUM服务器 先创建一个挂载 #mount #umount /dev/cdrom #mkdir /mnt/ ...
- Linux下指定版本编译安装LAMP
说明: 操作系统:CentOS 6.5 64位 需求: 编译安装LAMP运行环境 各软件版本如下: MySQL:mysql-5.1.73 Apache:httpd-2.2.31 PHP:php-5.2 ...
- 【转】Linux下XenServer管理工具安装
转载文章 - Linux下XenServer管理工具安装 Xen-Server 6.5 虚拟机安装Linux系统 vmware安装ubuntu12.04嵌套安装xen server(实现嵌套虚拟化) ...
- linux下.run文件的安装与卸载
linux下.run文件的安装与卸载 .run文件的安装很简单,只需要为该文件增加可执行属性,即可执行安装 以 virtualbox 的安装文件 virtualbox-3.1.6-59338-Li ...
随机推荐
- 2020-04-07:说出Servlet的生命周期,并说出Servlet和CGI的区别。
Servlet的生命周期分为5个阶段:实例化:Servlet容器创建Servlet类的实例.初始化:该容器调用init()方法,通常会申请资源.服务:由容器调用service()方法,(也就是doGe ...
- C#LeetCode刷题之#225-用队列实现栈(Implement Stack using Queues)
问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/4106 访问. 使用队列实现栈的下列操作: push(x) -- ...
- LeetCode 120. Triangle (三角形最小路径和)详解
题目详情 给定一个三角形,找出自顶向下的最小路径和.每一步只能移动到下一行中相邻的结点上. 例如,给定三角形: [ [2], [3,4], [6,5,7], [4,1,8,3] ] 自顶向下的最小路径 ...
- Go语言入门系列(六)之再探函数
Go语言入门系列前面的文章: Go语言入门系列(三)之数组和切片 Go语言入门系列(四)之map的使用 Go语言入门系列(五)之指针和结构体的使用 在Go语言入门系列(二)之基础语法总结这篇文章中已经 ...
- QUIC协议详解之Initial包的处理
从服务器发起请求开始追踪,细说数据包在 QUIC 协议中经历的每一步.大量实例代码展示,简明易懂了解 QUIC. 前言 本文介绍了在 QUIC 服务器在收到 QUIC 客户端发起的第一个 UDP 请求 ...
- Ubuntu无法安装 英伟达显卡
安装Ubuntu无法正常驱动英伟达,这时需要在启动参数中添加nomodset 如果不会添加参数可以参考这篇文章:安装ubuntu时黑屏三种解决办法
- 计算机网络要点---TCP
计算机网络要点---TCP 浏览器在通过域名通过dns服务器找到你的服务器外网ip,将http请求发送到你的服务器,在tcp3次握手之后(http下面是tcp/ip),通过tcp协议开始传输数据,你的 ...
- Python 用load_workbook 读取excel某个单元格数据、读取excel行数、列数
from openpyxl import load_workbook path = r'D:\pywork\12' # EXCEL信息所在文件夹 e= load_workbook(path + '/' ...
- 最新通达OA-getshell 漏洞复现
0x00 通达简介 通达OA国内常用的办公系统,使用群体,大小公司都可以,其此次安全更新修复的高危漏洞为任意用户登录漏洞.攻击者在远程且未经授权的情况下,通过利用此漏洞,可以直接以任意用户身份登录到系 ...
- javascript 数组的组合
javascript 数组的组合 一.前言 二.数组的组合 concat()方法 push(...items) 其他方法 三.结束语 一.前言 今天在开发项目过程中,遇到了一个需求,先请求了30个数据 ...