python解释器的作用是什么_使用pyenv 管理你的Python解释器

Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发。

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

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

pyenv介绍

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

安装pyenv

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

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

2e481284126b49af8ddd544834a47203.jpg

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

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

0340e5e5bd33464889e9a397c2466078.jpg

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

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

fa412d788bf9469f8f3753862900249a.jpg

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

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

45e1f088912041beb74598e0f0bc25bc.jpg

使用pyenv安装一些Python解释器

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

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

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

2.7.17

3.6.9

3.8.0

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

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

7dda28f6bae346c28f04270cfc735d99.jpg

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

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

请注意依赖项!

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

9b4d3c4a2d6641179c063becc039cae4.jpg

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

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

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

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

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

1b2636b34a534285b6eae8befc2c9a55.jpg

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

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

关于pyenv作用域

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

局部

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

2. 全局

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

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

baeece83f1a4423ca2afd7c9ed9cd2cf.jpg

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

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

pyenv global再次显示全局作用域被设置为system。

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

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

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

pyenv local 3.8.0将本地作用域设置为Python 3.8.0,正如python -V的下一次执行所示的。

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

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

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

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

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

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

下一次

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

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

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

请继续关注这个了不起的软件为你的Python依赖项管理工作流程带来的工作流!英文原文:https://www.marc-richter.info/using-pyenv-to-manage-your-python-interpreters/

译者:测试

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值