使用pyenv管理你的Python解释

几年前,当我开始学习Python时,我经常想知道什么是“正确的”或“最佳的”方法来准备系统的Python环境,以满足您的软件项目或您希望开始使用的一些基于Python的应用程序的需求:我应该使用操作系统的包管理器安装模块吗?或者使用像pip这样的Python工具来安装?什么是“虚拟环境”,并且我要如何在我的项目中使用它们?pynv、pip、pipnv、asy_install、stuptools、anaconda、conda、miniconda等所有这些都是什么?

在本系列文章中,我将介绍Python世界中最常见的完成这些任务的工具和技术。在这个系列的最后,我将分享我当时的一些想法、疑问和问题,讲述我在此期间收集的一些经验,并大致分享这次旅程的结果以及我现在的Python工作流看起来是什么样子。

pynv介绍

这第一篇文章是关于pynv的,它是一个轻量级的但又功能强大的Python版本管理工具,它在用户权限下工作,并且不会影响系统全局Python解释器。

安装pynv

在我的开发工作站上,当我准备Python开发环境时,我通常做的第一件事就是安装pynv。pynv允许你轻松地安装并在多个Python版本之间进行切换。并且不需要管理员权限,因为一切都发生在你的用户上下文和$HOME目录(~)中。通过这种方式,它甚至可以用于多用户环境,比如工作中的共享系统,或者你为自己的主页租用廉价主机时得到的系统,在这个系统中你没有root权限。

你可以像这样使用一行命令来安装它(首先要确保满足先决条件和构建依赖项):

在不做任何更改的情况下,此命令会将最新版本的pynv克隆到~/.pynv目录中。

接下来,你需要将其加载到任何新启动的shll中。在执行了安装命令后,pynv就会自动分享如何完成这个任务的建议:

注意,PATH所定义的路径中,这个新文件夹排在第一个。通过这种方式,对于你自己的shll,它比安装在不同位置的任何全局解释器版本(比如使用PMS安装的版本)都具有更高的优先级,这确保了执行python和pip命名命令总是使用指向pynv的版本。

一旦以上代码被输入到你的shll配置文件,打开一个子shll,将这些配置加载到你当前的环境中:

现在pynv命令在你的PATH中就可用了,以及将来由它安装的任何Python解释器。

强烈建议你立即搜索更新;即使在我们刚刚新安装它之后,应该不存在任何更新的情况下,因为你至少会看到pynv工作良好:

使用pynv安装一些Python解释器

让我们安装一些Python解释器,不是吗?

“几个?!?——我已经听到你说的了。

欧耶——欢迎来到pynv的轻松世界!让我们以这些版本为例:

.7.17

3.6.9

3.8.0

对于一个所有可用解释器的列表,请执行pynvinstall--list。

多亏了pynv,安装就像现在这么简单了:

BAM—现在你的环境中已经有了Python.7.17!由于它们是安装到~/.pynv/vrsions中的,所以没有一个版本会扰乱全局环境。

对前面提到的版本重复这个步骤,就完成安装了。

请注意依赖项!

注意:你仍然需要自己为操作系统提供Python的构建依赖项!如果你在安装解释器的过程中看到这样的东西,你肯定是缺失了它们中的任何东西了(在这个例子中是zlib):

通过在Ubuntu中添加适当的“源”URI并执行apt-gtbuild-dppython3.6来安装它们,正如Python的构建依赖项页面所建议的,这样就解决了UbuntuLinux中的这个问题。请使用任何其他操作系统发行版来帮助你。

在多个Python解释器之间进行切换

你现在已经有几个Python解释器可用了——那然后呢?如何使用并在它们之间进行转换呢?将所有的配置更改为类似于~/.pynv/vrsions/3.8.0/bin/python这样的东西似乎有点不方便,不是吗?

别担心,它比那容易多了!

假设,你即将在空的/nwdirctory~/projct中启动你的Python项目。你所需要做的就是切换到那个目录,并使用pynv启用你选择的解释器为“局部地”(稍后解释):

那多酷啊??你现在可以使用一个命令来切换你预安装的环境,该命令只会在你的项目文件夹中创建一个名为.python-vrsion的文本文件!

这很大程度上减少了对你所有的脚本使用#!/usr/bin/nvpython的问题;不管你的项目正在使用哪个版本,也不需要为将来的版本改变而更改它。

关于pynv作用域

注意:pynv支持两种作用域:

1、局部

当前项目/目录及其子目录的作用域称为“局部作用域”。当你将目录更改为一个没有定义局部版本的目录时,此作用域将会自动更改为全局定义的内容。如稍后所示,你可以使用pynvlocal命令来设置此作用域的版本。

、全局

如果没有定义特定的局部作用域(默认),则该作用域称为“全局作用域”。它被定义在~/.pynv/vrsion文件中,你可以使用pynvglobal命令来设置和更改它。

这些定义的作用域的区别显示在这个简短的shll会话中:

在pynv版本的输出中,我们看到所有的Python解释器都是由pynv安装的。在本例中,全局解释器(默认)用星号(*);systm进行标记。

systm是一个特例:它会绕过pynv安装的解释器,并在$PATH变量的其余部分中找到可执行的python。这意味着,它通常会解析为不是由pynv安装而是由你的PMS或类似工具安装的Python解释器。

pynvglobal再次显示全局作用域被设置为systm。

pynvlocal会打印当前目录的本地作用域被设置成了什么(目前还没有内容;回到全局)。

第一个python-V显示了Python的实际版本。它是系统的默认Python版本(.7.15+)。

/usr/bin/python-V显示这与系统默认的python可执行文件的完整路径相同。

pynvlocal3.8.0将本地作用域设置为Python3.8.0,正如python-V的下一次执行所示的。

请注意,在我们设置本地作用域之前,这个非常相同的命令生成了不同一个的结果!

一旦我们再次离开这个目录,我们就会回到全局作用域的.7.15+版本。

返回到定义了局部版本的项目目录(包含.python-vrsion文件)会立即再次启用局部地定义的版本,无需关心其他任何事情。

对于子目录,它甚至也会保持激活状态。

这就是你开始使用pynv之前所需要了解的全部内容!它%的涵盖了我日常工作中的需要,所以为了让你开始使用它,这里并没有遗漏太多。

你可以自由地从该项目的文档资源中研究更多的细节。

下一次

我希望你喜欢这第一篇文章!

我总是欢迎任何类型的评论,所以请在评论区自由留言。

在本系列的下一部分中,我将介绍pipnv——一个高级的Python包管理器、依赖项管理器和虚拟环境管理器。

请继续


转载请注明:http://www.aierlanlan.com/rzfs/324.html

  • 上一篇文章:
  •   
  • 下一篇文章: 没有了