推荐一款Python开发环境管理神器

栏目: Python · 发布时间: 5年前

内容简介:在Python开发中,有些情况下,我们可能面临在一台机器上同时安装多版本Python的需求。比如:那么,如何高效地在单台机器上实现多个版本Python(具体来说,这里Python指的是Python解释器)的安装和维护呢?除此之外,我们还可能面临在一台机器上安装多个版本的某个Python第三方库的需求。比如:有多个Python项目,每个项目依赖于不同版本的Python第三方库

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.2pyenv global 3.7.3 ,那么由于local的优先级高于global,所以当前生效的Python版本是3.7.2。

这样,我们便很方便地实现了单一机器上安装多个版本的Python,并且可以根据实际需要,灵活地切换Python版本。

多虚拟环境管理

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

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

pyenv virtualenv <python_version> <environment_name>
复制代码

虚拟环境的名称建议体现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虚拟环境呢?我们只需要创建两个虚拟环境(例如 myprojectenvmyprojectenv2 ),并且在使用时进行切换即可:

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 的使用十分简单,易于上手。想要更多地了解 pyenv ,可以阅读:


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

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

HTML5秘籍(第2版)

HTML5秘籍(第2版)

[美] Matthew MacDonald / 李松峰、朱巍、刘帅 / 人民邮电出版社 / 2015-4 / 89.00元

不依赖插件添加音频和视频,构建适用于所有浏览器的播放页面。 用Canvas创建吸引人的视觉效果,绘制图形、图像、文本,播放动画,运行交互游戏。 用CSS3将页面变活泼,比如添加新奇的字体,利用变换和动画添加吸引人的效果。 设计更出色的Web表单,利用HTML5新增的表单元素更加高效地收集访客信息。 一次开发,多平台运行,实现响应式设计,创建适配桌面计算机、平板电脑和智能手机......一起来看看 《HTML5秘籍(第2版)》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具