Linux下多个Python版本安装教程

 更新时间:2018年08月15日 15:12:25   作者:铁乐猫  
这篇文章主要为大家详细介绍了Linux下多个Python版本的安装教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

因为环境或学习的需要,我们可能需要在服务器上安装多个python版本,安装一个更新的python版本后,使用软链来进行共存。

这个时候需要进行源码编译安装。

当然后续开发项目可以直接跑在虚拟环境下隔离开来,就不再需要在服务器上安装多个不同版本的包了。

下载Python源码

http://www.python.org/download/根据需要的版本下载源文件。

例如上图就是我在官网直接找到3.5.6版本的下载页面,点击的tar源码包进行下载。

编译安装

补充

注意编译安装python前最好先保证系统己安装上以下库

yum install zlib
yum install zlib-devel
yum install openssl
yum install openssl-devel
yum install readline-devel

解压源码包

tar zxvf Python-3.5.6.tgz
cd Python-3.5.6

配置选项

sudo ./configure --enable-optimizations --prefix=/usr/local/python-3.5.6 --with-zlib --with-readline
--enable-optimizations 为最优安装,建议使用这个参数。
--prefix为指定安装的路径

进行编译安装

sudo make
sudo make install

修改Python软链

默认python命令是在/usr/bin/目录下,需要在这里把软链修改成3.5.6的版本,顺便建立一个3.5.6的软链。

上图是原默认软链接,是python2.7的,其实它也己经默认建立了一个python2的软链接了。

重新命名默认python软链接为python2.7以便3.5的版本成为默认环境变量

sudo mv /usr/bin/python /usr/bin/python2.7

建立python3.5版本的软链接

sudo ln -s /usr/local/python-3.5.6/bin/python3.5 /usr/bin/python

当然,也可以不做上一步,而是将3.5版本的软链接成python3之类也是可行的。

比如我做的就是新增python3的软链接指向python3.5所在的目录。
顺便也将配置文件也做了一个软链接指向:

sudo ln -s /usr/local/python-3.5.6/bin/python3.5-config /usr/bin/python3-config

补充

注意 如无特别需要,推荐命名成不同python的软链接,因为你会发觉要是你直接改了原来指向旧版本的软链接的话,pip,virtualenv等依赖原版本python的工具需要改它的py文件头的环境变量。

如果你修改了原软链接,使得python实际指向的是新版本的python的话,pip等仍依赖旧版本的工具要么重装要么修改它py文件的首行,按实际情况重新指向你的旧版本原版本的python环境,例如此处我就可直接改成/usr/bin/python2

虚拟环境设置不同版本的python

创建好项目目录,cd进到目录下。

在创建python虚拟环境时,可以指定虚拟环境要使用的python版本,例如下命令(使用-p参数指明python解释器的路径):

 -p PYTHON_EXE, --python=PYTHON_EXE
 The Python interpreter to use, e.g.,
 --python=python3.5 will use the python3.5 interpreter
 to create the new environment. The default is the
 interpreter that virtualenv was installed with
 (/usr/bin/python)

例:

virtualenv -p /usr/bin/python2 ENV2.7 #创建python2.7的虚拟环境
virtualenv -p /usr/bin/python3 ENV3.5 #创建python3.5的虚拟环境
virtualenv --python=python3 my-env #创建python3.5的虚拟环境

之所以装多个版本的python,有一个原因很重要,也就是想要使用virtualenv创建隔离的虚拟环境的时候指定不同python版本。但是前面我进行编译安装的时候没有指定编译安装上zlib库,就会出现以下如图问题:

报找不到zlib模块错误。

所以最好还是系统原环境变量安装成高版本的python,或进行python编译安装的时候记得加上--with-zlib
最好--with-zlib-develreadline也带上。

当然,补救办法也是有的,就是重新进行编译安装。
(重新进行本文最开始的操作,当然本文最开始笔者己经补充更正过了编译安装时的配置。)

笔者由于重新编译后仍然报zlib模块错误,笔者并不想弄污原来python2.7的环境,所以决定尝试virtualenv下载源码来使用,而zlib也进行编译安装来让python3也能正常导入zlib模块。

下载zlib模块并进行编译安装

官网http://www.zlib.net/下载最新版本的zlib源码文件,我下载的是zlib-1.2.11.tar.gz

安装zlib:

tar xzvf zlib-1.2.11.tar.gz
cd zlib-1.2.11

建议默认路径安装,编译三部曲:

./configure
make
make install

python导入zlib

如下图,编译安装完成zlib后,进python3测试己经可能正常导入zlib包。

zlib安装完后,libz.a/usr/local/lib/,opensusezlib.h默认放在/usr/local/include/中。
其它linux的zlib.h文件一般在/usr/include中。

重新编译python并指定zlib

如果还发生少数导入不成功,或你想直接软链接升级python旧版本的,可能需要重新编译python。

进入Python源码文件目录,重新编译Python

sudo ./configure --enable-optimizations --prefix=/usr/local/python-3.5.6 --with-zlib=/usr/include

或者:

./configure --enable-optimizations --prefix=/usr/local/python-3.5.6 --with-zlib-dir=/usr/local/lib

都可以完成python对zlib库的支持,在python源码中直接import zlib即可使用zlib了。

下载virtualenv源码包

直接到pypi下载16.0.0版本。
tar命令进行解压

tar xvfz virtualenv-16.0.0.tar.gz
cd virtualenv-16.0.0

此目录下文件如下,我们主要用到的并不是setup安装,而是直接使用它的virtualenv.py文件。

virtualenv创建虚拟环境

在项目目录下直接指定python版本及virtualenv.py的绝对路径进行创建虚拟环境:

sudo python3 /home/operation/virtualenv-16.0.0/virtualenv.py py3

可以不进行全局安装,而是用户下进行虚拟化环境可以直接使用python3 后接virtualenv.py运行,完美解决需求。

也可以使用原python2下的全局virtualenv来执行,一样可以创建,如:

operation@opensuse-wordpress:/work> sudo virtualenv --python=python3 my_py3_env
[sudo] password for root: 
Running virtualenv with interpreter /usr/bin/python3
Using base prefix '/usr/local/python-3.5.6'
New python executable in /work/my_py3_env/bin/python3
Also creating executable in /work/my_py3_env/bin/python
Please make sure you remove any previous custom paths from your /root/.pydistutils.cfg file.
Installing setuptools, pip, wheel...done.

虚拟隔离环境目录如下:

具体virtualenv的使用命令等见相关文章,在此就不再详述。
如此,在liunx下己经可以实现多版本的python完美共存。

更多关于python安装教程的文章请参考《python各版本安装教程》

更多精彩书单,请点击python编程必备书单

领取干货:零基础入门学习python视频教程

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • 详解Python中高阶函数(map,filter,reduce,sorted)的使用

    详解Python中高阶函数(map,filter,reduce,sorted)的使用

    高阶函数就是能够把函数当成参数传递的函数就是高阶函数,换句话说如果一个函数的参数是函数,那么这个函数就是一个高阶函数。本文为大家详细讲解了Python中常用的四个高阶函数,感兴趣的可以了解一下
    2022-04-04
  • Python3.6+selenium2.53.6自动化测试_读取excel文件的方法

    Python3.6+selenium2.53.6自动化测试_读取excel文件的方法

    这篇文章主要介绍了Python3.6+selenium2.53.6自动化测试_读取excel文件的方法,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-09-09
  • python通过cmd创建虚拟环境的实现(pip方式)

    python通过cmd创建虚拟环境的实现(pip方式)

    Python的虚拟环境是正常的现实环境相对应的,在虚拟环境中安装的包是与现实环境隔离的,本文主要介绍了python通过cmd创建虚拟环境的实现,感兴趣的可以了解一下
    2023-11-11
  • Python turtle库绘制菱形的3种方式小结

    Python turtle库绘制菱形的3种方式小结

    今天小编就为大家分享一篇Python turtle库绘制菱形的3种方式小结,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-11-11
  • 深入理解Python爬虫代理池服务

    深入理解Python爬虫代理池服务

    这篇文章主要介绍了Python爬虫代理池服务的相关知识,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2018-02-02
  • 如何使用 profile 进行python代码性能分析

    如何使用 profile 进行python代码性能分析

    对代码优化的前提是需要了解性能瓶颈在什么地方,程序运行的主要时间是消耗在哪里,对于比较复杂的代码可以借助一些工具来定位,python 内置了丰富的性能分析工具,本文介绍如何使用profile进行python代码性能分析,感兴趣的朋友一起看看吧
    2024-12-12
  • 浅谈tensorflow 中的图片读取和裁剪方式

    浅谈tensorflow 中的图片读取和裁剪方式

    这篇文章主要介绍了浅谈tensorflow 中的图片读取和裁剪方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-06-06
  • 利用Python 实现图片转字符画

    利用Python 实现图片转字符画

    这篇文章主要介绍了利用Python 实现图片转字符画,要将图片转字符画,需要先定义一个字符集,用来和灰度值做映射,将图片每个像素的 RGB 值转换为一个灰度值,将其对应的字符输出就得到字符画
    2022-06-06
  • Python多线程编程(五):死锁的形成

    Python多线程编程(五):死锁的形成

    这篇文章主要介绍了Python多线程编程(五):死锁的形成,本文讲解了死锁的概念、死锁示例、避免死锁的方法等内容,需要的朋友可以参考下
    2015-04-04
  • 利用Python计算圆周率π的实例代码

    利用Python计算圆周率π的实例代码

    圆周率没有精确的计算公式,所以只能用近似的方式计算它的近似值。这篇文章主要介绍了利用Python计算圆周率π的相关资料,需要的朋友可以参考下
    2021-05-05

最新评论