前言

在Python开发中,有些情况下,我们可能面临在一台机器上同时安装多版本Python的需求。比如:

有多个Python项目,每个项目依赖不同的Python版本。

有一个Python项目,它需要同时支持多个Python版本。

那么,如何高效地在单台机器上实现多个版本Python(具体来说,这里Python指的是Python解释器)的安装和维护呢?

除此之外,我们还可能面临在一台机器上安装多个版本的某个Python第三方库的需求。比如:有多个Python项目,每个项目依赖于不同版本的Python第三方库requests。这时候,如何在单台机器上实现多版本Python requests库的安装和维护呢?

本文介绍一款神器。它提供了最简洁的方法,让上述两种需求同时得到满足。

多版本Python管理

实现多版本Python管理的工具叫做pyenv。它的安装命令为:curl https://pyenv.run | bash

安装完成后,需要进行简单配置。将下面几行配置信息添加到文件~/.bashrc中,然后执行命令exec "$SHELL",让配置生效。export PATH="$HOME/.pyenv/bin:$PATH"

eval "$(pyenv init -)"

eval "$(pyenv virtualenv-init -)"

接着,可以通过查看pyenv版本来检查安装和配置是否成功:root@hzettv53:~# pyenv -v

pyenv 1.2.12

由于pyenv是基于源代码进行Python的编译和安装的。因此,我们需要先安装编译相关的一些依赖包。由于这些依赖是操作系统相关的。因此,不同的操作系统,安装命令不同。

以常见的Ubuntu/Debian系统为例,安装命令为:sudo apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev xz-utils tk-dev libffi-dev liblzma-dev python-openssl

现在就可以使用pyenv安装Python了。安装新版本之前,我们先查看系统当前安装的Python版本:root@hzettv53:~# pyenv versions

* system (set by /root/.pyenv/version)

root@hzettv53:~# python -V

Python 2.7.12

可见,当前使用的是操作系统自带的Python,其版本为2.7.12。这时,如果我们需要安装一个新的版本,例如Python 3.7.2, 只需执行命令:pyenv install -v 3.7.2

注意,由于pyenv是基于Python源代码进行编译安装,因此这一步骤会有点慢,需要耐心等待。安装完成后,查看系统中的Python版本:root@hzettv53:~# pyenv versions

* system (set by /root/.pyenv/version)

3.7.2

root@hzettv53:~# python -V

Python 2.7.12

可以看到,系统中已经有两个版本的Python了。但是当前使用的仍然是系统版本。如果想要使用新安装的版本,只需:root@hzettv53:~# pyenv global 3.7.2

root@hzettv53:~# pyenv versions

system

* 3.7.2 (set by /root/.pyenv/version)

root@hzettv53:~# python -V

Python 3.7.2

这里命令pyenv global 3.7.2改变了全局的Python版本。如果只想在当前文件夹中使用Python 3.7.2,那么可以执行:pyenv local 3.7.2;如果只想在当前Shell环境中使用Python 3.7.2,那么可以执行:pyenv shell 3.7.2。

如果同时设置了global, local和shell三种Python版本,那么哪一种会真正生效呢?这里有一个优先级排序,即shell > local > global。举例来说,如果先后执行了pyenv local 3.7.2和pyenv global 3.7.3,那么由于local的优先级高于global,所以当前生效的Python版本是3.7.2。

这样,我们便很方便地实现了单一机器上安装多个版本的Python,并且可以根据实际需要,灵活地切换Python版本。学习python过程中有不懂的可以加入我的python零基础系统学习交流秋秋qun:前面是784,中间758,后面是214,与你分享Python企业当下人才需求及怎么从零基础学习Python,和学习什么内容。相关学习视频资料、开发工具都有分享

多虚拟环境管理

不同项目之间,不仅依赖的Python版本可能不同,而且依赖的Python第三方库的版本也可能不同。我们将项目所依赖的Python及其第三方库统一称为虚拟环境。如果同时存在多个Python项目,各自依赖不同的虚拟环境,如何有效管理呢?

这时,我们仍然可以使用pyenv来达成我们的目标。使用下述命令可以创建一个指定Python版本的虚拟环境。pyenv virtualenv

虚拟环境的名称建议体现Python项目名称。例如,我们有一个叫做myproject的项目,并且基于Python 3.7.2进行开发,那么可以执行命令:pyenv virtualenv 3.7.2 myprojectenv

这样,我们便创建了一个名为myprojectenv的虚拟环境。那么如何使用它呢?我们在需要使用这个虚拟环境的地方(例如,cd到项目myproject的文件夹路径),执行以下命令即可:pyenv local myprojectenv

这时,我们可以看到,当前使用的Python和pip都指向的是虚拟环境myprojectenv:root@hzettv53:~/workspace/test# pyenv which python

/root/.pyenv/versions/myprojectenv/bin/python

root@hzettv53:~/workspace/test# pyenv which pip

/root/.pyenv/versions/myprojectenv/bin/pip

这意味着,我们此时用pip命令安装的所有Python第三方包,都是安装到了虚拟环境myprojectenv的路径下,而不是系统路径。这样,我们便实现了Python项目和其所依赖的Python开发环境(即虚拟环境)的绑定。不同的Python项目,完全可以各自使用不同的Python虚拟环境,互不影响。

那么,如果一个Python项目需要使用两种Python虚拟环境呢?我们只需要创建两个虚拟环境(例如myprojectenv和myprojectenv2),并且在使用时进行切换即可:root@hzettv53:~/workspace/myproject# pyenv local myprojectenv

root@hzettv53:~/workspace/myproject:~# python -V

Python 3.7.2

root@hzettv53:~/workspace/myproject# pyenv local myprojectenv2

root@hzettv53:~/workspace/myproject:~# python -V

Python 2.7.12

总结

开发环境的高效管理是软件工程中的一个难题,尤其是需要同时维护多个环境的时候。pyenv提供了在单台机器上实现多版本Python和多类型Python虚拟环境的有效管理。pyenv的使用十分简单,易于上手

php和派森,安装多版本Python,一个神器足矣相关推荐

  1. python2和python3如何共存,如何安装多版本python python2和python3共存以及pip共存

    Python的版本是挺折腾人的,本着简单实用的原则我介绍一下我是如何安装多版本Python的. 环境:windows10(64位) Python版本:2.7.13和3.5.2 1.安装Python2. ...

  2. Python 基础之在ubuntu系统下安装双版本python

    前言:随着python升级更新,新版本较于老版本功能点也有不同地方,作为一个初学者应该了解旧版本的规则,也要继续学习新版本的知识.为了能更好去学习python,我在ubuntu安装python2和py ...

  3. windows下安装不同版本Python教程

    前言 博主也是很长一段时间没有更新文章了吧,因为最近都在忙着升级我的API管理系统,还有准备会考,时隔大概一个月,我带来了本次文章,如何在windows系统下安装多个版本Python,且各版本Pyth ...

  4. Mac下安装多版本python

    1.安装Homebrew 将命令行复制至终端,进行安装. /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/H ...

  5. python安装哪个版本-python到底安装哪个版本

    如果你是一个初学者,或者你以前接触过其他的编程语言,你可能不知道,在开始学习python的时候都会遇到一个比较让人很头疼的问 题:版本问题!!是学习python2 还是学习 python3 ?这是非常 ...

  6. windows安装各版本python解释器和anaconda

    window安装python解释器(3.6) 安装过程详见下面链接:https://jingyan.baidu.com/article/e9fb46e1502c5a7520f76640.html py ...

  7. ubuntu成功安装高版本python,使用其他命令出现subprocess.CalledProcessError错误

    1.ubuntu之前安装python3.5版本,更新升级为python3.7版本. 2.使用pip3 install pyinstaller,报subprocess.CalledProcessErro ...

  8. windows下多版本python安装与pip安装和pip使用 吐血总结

    https://blog.csdn.net/silence2015/article/details/56483892/ 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附 ...

  9. python安装 pip_多版本Python安装pip及pip版本管理终极教程

    有时候电脑或服务器里需要安装多个版本的Python,比如Python2.7.Python3.5.Python3.6.同时存在多个版本的Python,如何安装对应的pip成为一个头疼的问题,本文从原理入 ...

最新文章

  1. 数学建模——K-means聚类模型Python代码
  2. 真正的取真实IP地址及利弊
  3. python获取当前日期_Python程序获取当前日期
  4. CRC16算法之三:CRC16-CCITT-MODBUS算法的java实现
  5. apollo集群部署_egg框架对接Apollo
  6. flash 基础语法
  7. Spring boot实体类中常用基本注解
  8. 企业内部IT报修是如何操作的?
  9. python venv jenkins_Jenkins+Pytest+Allure集成测试环境
  10. jQuery 学习-样式篇(八):jQuery 设置元素的 CSS 样式
  11. Error accessing PRODUCT_USER_PROFILE?
  12. 添加SAP_ALL权限
  13. Atitit java播放 wav MIXER 混响器编程 目录 1.1. MIXER 混响器编程 1 1.2. 得到系统中一共有多少个混音器设备: 1 1.3. 接口摘要 1 1.4. 调节音量
  14. Servlet实现一个登陆界面
  15. 全球20大半导体企业无1家入围,中国半导体任重道远
  16. DNS域名解析过程剖析
  17. 你的GitHub代码已打包运往北极,传给1000年后人类!网友:我的Bug还没修复...
  18. 图解数据分析(4) | 核心步骤1 - 业务认知与数据初探(数据科学家入门·完结)
  19. 《微积分:一元函数积分学》——指数函数积分进阶
  20. 流式处理术语解释:Exactly-once与Effectively-once

热门文章

  1. 矩阵分解法做推荐系统
  2. ubuntu 安装pytorch
  3. TRMF 辅助论文:最小二乘法复现TRMF
  4. python 包介绍:osmnx
  5. 文巾解题 113. 路径总和 II
  6. NTU课程 CE7454 回归与分类
  7. MATLAB基本操作(三):数据类型
  8. matlab reshape使用
  9. C++学习路线(最全资源整合)
  10. QT 使用全局变量的方法