环境:CentOS-7-x86_64-Everything-1611

No.1 查看CentOS对Python的默认依赖

[root@cs ~]# ls /usr/bin/python*
/usr/bin/python /usr/bin/python2 /usr/bin/python2.7

因为CentOS的yum对Python的依赖,我们在安装Python的时候,要小心避开,以免影响yum的使用。

No.2 准备编译环境以及配置相关依赖

[root@bogon nee]# yum groupinstall 'Development Tools' && yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel && yum -y epel-release

需要注意的是,这一步必须要做,为了避免后面安装解释器时遇见错误。

No.3 下载Python解释器及各自的pip包,并解压

3.1 下载tar包

[root@bogon nee]# cd /usr/local/src/
[root@bogon src]# wget https://www.python.org/ftp/python/3.5.4/Python-3.5.4.tar.xz && wget https://www.python.org/ftp/python/2.7.14/Python-2.7.14.tar.xz && wget --no-check-certificate https://github.com/pypa/pip/archive/9.0.3.tar.gz && wget https://bootstrap.pypa.io/get-pip.py

3.2 解压tar包

[root@bogon src]# tar -xvf Python-3.5.4.tar.xz && tar -xvf Python-2.7.14.tar.xz && tar -zxvf 9.0.3.tar.gz

No.4 Python2的安装并建立软连

4.1 安装

[root@bogon src]# cd Python-2.7.14/
[root@bogon Python-2.7.14]# ./configure --prefix=/usr/local/python/python27 --enable-optimizations
[root@bogon Python-2.7.14]# make && make install

我们在 ./configure 这一步,将Python2安装在/usr/local/python/python27这个目录下,下面Python3也在/usr/local/python目录下,这样便于管理,和安装其他版本的解释器。

4.2 建立软连

我们可以看到bin下有python和python2和python2.7这三个可以用的解释器

[root@bogon Python-2.7.14]# ls /usr/local/python/python27/bin/
2to3 idle pydoc python python2 python2.7 python2.7-config python2-config python-config smtpd.py

任选一个解释器建软连都行  

[root@bogon Python-2.7.14]# ln -s /usr/local/python/python27/bin/python2 /usr/bin/python27

注意,软连到/usr/bin的是python27,因为系统默认有python2,所以,我们不能跟人家一样...下面其他的软连同理,避开系统默认的

No.5 Python3的安装并建立软连

这里建立软连和添加PATH一样,用哪种方法都行, 软连的意思是将python的解释器添加到 /usr/bin 下,而 /usr/bin 这个路径在PATH中已经存在的

5.1 安装

[root@bogon Python-2.7.14]# cd ../Python-3.5.4/
[root@bogon Python-3.5.4]# ./configure --prefix=/usr/local/python/python35 --enable-optimizations
[root@bogon Python-3.5.4]# make && make install

5.2 建软连

注意:/usr/local/python/python35/bin/ 下的解释器叫什么,最好ls一下看看。

[root@bogon Python-3.5.4]# ln -s /usr/local/python/python35/bin/python3 /usr/bin/python35

No.6 配置Python3的pip并建立软连

6.1 安装Python3的pip包

[root@bogon Python-3.5.4]# ls /usr/local/src/ && cd ../pip-9.0.3/
9.0.3.tar.gz pip-9.0.3 Python-2.7.14.tar.xz Python-3.5.4.tar.xz
get-pip.py Python-2.7.14 Python-3.5.4
[root@bogon pip-9.0.3]# python35 setup.py install

可以看到Python3的pip包是pip-9.0.3,所以我们要切换到此目录内,执行安装,这一步是基于前面步骤没有问题的基础上执行的。比如你python35的解释器没有配好,那么根本无法执行pip的安装。

6.2 建立pip3的软连

# [root@bogon pip-9.0.3]# ln -s /usr/local/python/python35/bin/pip /usr/bin/pip  # 这个软连可不建立,这样只是没有默认的pip
[root@bogon pip-9.0.3]# ln -s /usr/local/python/python35/bin/pip /usr/bin/pip35

我们在用pip的时候,直接pip35就行,下面的Python2的pip同理。

No.7 配置Python2的pip并建立软连

7.1 安装Python2的pip包

[root@bogon pip-9.0.3]# cd .. && ls
9.0.3.tar.gz pip-9.0.3 Python-2.7.14.tar.xz Python-3.5.4.tar.xz
get-pip.py Python-2.7.14 Python-3.5.4
[root@bogon src]# python27 get-pip.py

7.2 建立Python2的软连

[root@bogon src]# ln -s /usr/local/python/python27/bin/pip2 /usr/bin/pip27

No.8 执行测试

[root@cs src]# python35 -V
Python 3.5.4
[root@cs src]# pip35 -V
pip 9.0.3 from /usr/local/python/python35/lib/python3.5/site-packages/pip-9.0.3-py3.5.egg (python 3.5)
[root@cs src]# python27 -V
Python 2.7.14
[root@cs src]# pip27 -V
pip 10.0.1 from /usr/local/python/python27/lib/python2.7/site-packages/pip (python 2.7)

No.9 选择升级(此步骤可略过)

目前最新的pip包为10.0.1,如果不升级,在每次使用pip的时候,会提示你升级,当然我们可以忽略,如果要升级的话:

pip35 install --upgrade pip    # Python3的pip升级方式
pip27 install --upgrade pip # Python2的pip升级方式

至此,我们在centos下成功安装双版本的python解释器并设置各自的pip。只是没有默认的解释器和pip,但我们为了省事没有修改系统依赖的yum头,而且,修改yum头的话,新手容易失手。

1.  保存默认版本,并建立yum依赖的软连
mv /usr/bin/python2.7 /usr/bin/python2.7.5
ln -s /usr/bin/python2.7.5 /usr/local/bin/python2.7.5
ll /usr/bin/yum*
vi /usr/bin/yum*
vi /usr/libexec/urlgrabber-ext-down
#!/usr/bin/python —> #!/usr/bin/python2.7.5 3. 准备编译环境与相关依赖
yum groupinstall 'Development Tools' && yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel && yum -y epel-release
4. 下载解释器与pip的tar包,执行解压
cd /usr/local/src wget https://www.python.org/ftp/python/3.5.4/Python-3.5.4.tar.xz && wget https://www.python.org/ftp/python/2.7.14/Python-2.7.14.tar.xz && wget --no-check-certificate https://github.com/pypa/pip/archive/9.0.3.tar.gz && wget https://bootstrap.pypa.io/get-pip.py tar -xvJf Python-3.5.4.tar.xz && tar -xvJf Python-2.7.14.tar.xz && tar -zxvf 9.0.3.tar.gz # xz压缩方式,tar打包方式 5. 执行安装,并建立各自的软连
cd Python-3.5.4
./configure --prefix=/usr/local/python/python35 --enable-optimizations make && make install
mkae clean && make distcleancd ln -s /usr/local/python/python35/bin/python3 /usr/bin/python3
ln -s /usr/local/python/python35/bin/python3 /usr/bin/python cd /usr/local/src/Python-2.7.14
./configure --prefix=/usr/local/python/python27 --enable-optimizations make && make install
mkae clean && make distcleancd
ln -s /usr/local/python/python27/bin/python2 /usr/bin/python2 7. 配置python3 的pip wget --no-check-certificate https://github.com/pypa/pip/archive/9.0.3.tar.gz tar -zxvf 9.0.3.tar.gz
cd pip-9.0.3
python3 setup.py install
ln -s /usr/local/python/python35/bin/pip3 /usr/bin/pip3
ln -s /usr/local/python/python35/bin/pip /usr/bin/pip
pip3 install --upgrade pip python2 配置pip
wget https://bootstrap.pypa.io/get-pip.py
python2 get-pip.py
ln -s /usr/local/python/python27/bin/pip2 /usr/bin/pip2 pip2 install --upgrade pip

测试笔记


that's all

see also:

  https://www.linuxidc.com/Linux/2017-12/149807.htm

  解决yum头部对Python依赖的问题,强迫症可以看看

  centos7安装python3 以及tab补全功能

  [Python3网络爬虫开发实战] 1.1-Python3的安装

centos7.3配置python2、3环境与配置各自pip的更多相关文章

  1. 配置rt-thread开发环境(配置系统,生成系统镜像)

    配置rt-thread开发环境 ===========Python============= 1.Python的下载地址:http://www.python.org/ftp/python/ 链接中有各 ...

  2. CentOS 7配置LNMP开发环境及配置文件管理

    安装并配置MySQL 5.6 从CentOS从7.x开始默认使用MariaDB.MariaDB完全兼容MySQL,包括API和命令行.但是很多时候我们还是会想要安装MySQL,所以不能直接通过yum命 ...

  3. java -jdk配置1(环境变量配置)

    此文转载自:http://www.cnblogs.com/nicholas_f/articles/1494073.html 进行java开发,首先要安装jdk,安装了jdk后还要进行环境变量配置: 1 ...

  4. 统一Java环境变量配置,Java环境如何配置?

    一 JDK下载和安装 Java开发工具包统一下载地址:https://www.hiai.top/archives/268.html 二 java环境变量配置 1.变量名:JAVA_HOME 变量值:你 ...

  5. python2, 3环境变量配置(win10下)

    1.找到此电脑,右击点击属性 2.左边侧栏,高级系统设置 3.系统属性中点击高级 4.点击环境变量 5.可以看到 某某某用户变量和系统变量两个方框 其中,系统变量是要你在打开cmd是用管理员身份运行所 ...

  6. centos6.9安装virtualenv并配置python2.7环境

    一. 安装python2.7 解压文件 tar -xvf Python-2.7.14.tar 进入源码包目录 cd Python-2.7.14 开始构建之前指定安装的目录 默认会被安装进 /usr/l ...

  7. CentOS7/Ubuntu Linux java jdk 环境变量配置

    [root@localhost sony]# tar -zxvf jdk-8u121-linux-x64.tar.gz [root@localhost sony]# .0_121 /usr/local ...

  8. vue-cli 3.0 axios 跨域请求代理配置及生产环境 baseUrl 配置

    1. 开发环境跨域配置 在 vue.config.js 文件中: module.exports = { runtimeCompiler: true, publicPath: '/', // 设置打包文 ...

  9. Maven -- 在进行war打包时用正式环境的配置覆盖开发环境的配置

    我们的配置文件一般都放在  src/main/resource 目录下. 假定我们的正式环境配置放在 src/main/online-resource 目录下. 那么打成war包时,我们希望用onli ...

  10. node环境变量配置,npm环境变量配置

    引言:很久没有在windows上配过node, 记得以前node环境变量是要加 NODE_PATH 到用户变量,再在系统变量引入NODE_PATH的,而npm install的全局包目录会存放在C:/ ...

随机推荐

  1. jstat命令详解

    Jstat是JDK自带的一个轻量级小工具.全称“Java Virtual Machine statistics monitoring tool”,它位于java的bin目录下,主要利用JVM内建的指令 ...

  2. TimeUnit类中的sleep() 和Thread.sleep()

    TimeUnit是什么? TimeUnit是java.util.concurrent包下面的一个类,TimeUnit提供了可读性更好的线程暂停操作,通常用来替换Thread.sleep(),在很长一段 ...

  3. 省市区联动,非ajax请求。

    需求 不允许用 ajax 请求的方式加载数据,所以把所有的省市区写在数组里,用js动态加载. 数据源 民政部门户网站:http://www.mca.gov.cn/article/sj/xzqh/201 ...

  4. 最大团&优化

    貌似咕了三个半月了(gym101915里一道),今天又遇到一道(cf1105E),就学了学惹. 最大团定义:图上取尽可能多的点,这些点构成一个完全图. 最大独立集:图上取尽可能多的点,任意两点间不连接 ...

  5. export及export default的区别

    在JavaScript ES6中,export与export default均可用于导出常量.函数.文件.模块等,你可以在其它文件或模块中通过import+(常量 | 函数 | 文件 | 模块)名的方 ...

  6. 剑指offer——python【第15题】反转链表

    题目描述 翻转一个链表 样例:给出一个链表1->2->3->null,这个翻转后的链表为3->2->1->null 思路 一种比较简单的方法是用“摘除法”.就是先新 ...

  7. python全栈开发 * 09知识点汇总 * 1806011

    09 函数初识一 函数的的定义# 函数: 对代码块和功能的封装和定义# 引入 回家过程 未用函数# print("步行")# print("坐地铁")# pri ...

  8. MySQL 大表优化方案(长文)

    当MySQL单表记录数过大时,增删改查性能都会急剧下降,可以参考以下步骤来优化: 单表优化 除非单表数据未来会一直不断上涨,否则不要一开始就考虑拆分,拆分会带来逻辑.部署.运维的各种复杂度,一般以整型 ...

  9. windows 10 超级优化,同时解决本地磁盘100%的问题

    windows 10 超级优化,同时解决本地磁盘100%的问题 我的系统是笔记本I7处理器,配置了web服务器IIS 和一个数据库(mysql7),同时启用了虚拟机(表中已禁用),以及安装了offic ...

  10. POI导入excel时读取excel数据的真实行数

    有很多时候会出现空的数据导致行数被识别多的情况 // 获取Excel表的真实行数 int getExcelRealRow(Sheet sheet) { boolean flag = false; fo ...