前言:听起来很方便,不是吗?开始构建更复杂的项目并与其他人协作时,虚拟环境的重要性会凸显出来。很多数据科学家也需要熟悉虚拟环境中与多语言相关的Conda环境。
代码详解:Python虚拟环境的原理及使用!
Python的虚拟环境极大地方便了人们的生活。本指南先介绍虚拟环境的基础知识以及使用方法,然后再深入介绍虚拟环境背后的工作原理。
注意:本指南在macOS Mojave系统上使用最新版本的Python 3.7.x。
1. 为什么使用虚拟环境?
虚拟环境为一系列潜在问题提供简单的解决方案,尤其是在以下几个方面:
听起来很方便,不是吗?开始构建更复杂的项目并与其他人协作时,虚拟环境的重要性会凸显出来。很多数据科学家也需要熟悉虚拟环境中与多语言相关的Conda环境。
可按照先后次序来使用!
2. 什么是虚拟环境?
到底什么是虚拟环境?
虚拟环境是用于依赖项管理和项目隔离的Python工具,允许Python站点包(第三方库)安装在本地特定项目的隔离目录中,而不是全局安装(即作为系统范围内的Python的一部分)。
这听起来不错,但到底什么是虚拟环境呢?虚拟环境只是一个包含三个重要组件的目录:
最后一点在于会发生一些意想不到的错误,稍后会讲这一点,但现在先看看在实际中如何实际使用虚拟环境。
但丁《神曲·地狱篇》第六章—维吉尔安抚Cerberus
插图:Gustave Doré
3. 使用虚拟环境
(1) 创造虚拟环境
假设想要为正在处理的项目创建一个名为test-project/的虚拟环境,该项目具有以下目录树:
需要执行venv模块,它是Python标准库的一部分。
注意:可使用不同的环境名称替换“venv/”。
瞧!虚拟环境诞生了。现在项目变成:
提醒:虚拟环境本身就是一个目录。
唯一要做的事情是通过运行前面提到的脚本来“激活”环境。
现在我们位于活动的虚拟环境中(由命令提示符指示,前缀为活动环境的名称)。
我们会像往常一样处理项目,确保项目与系统的其他部分完全隔离。在虚拟环境中,我们无法访问系统范围的站点包,并且无法在虚拟环境之外访问安装包。
完成项目工作时,可以通过以下代码退出环境:
(2) 安装包
默认情况下,只在新环境中安装pip和setuptools。
如果想要安装第三方库的特定版本,比如numpyv1.15.3,可像往常一样使用pip。
现在可在脚本或活动的Python shell中导入numpy。例如,假设项目包含以下几行脚本tests / imports-test.py。
直接从命令行运行这个脚本时,可得到:
成功。脚本导入numpy没有故障。
但丁和Virgil穿过Styx河—但丁《神曲·地狱篇》第八章
插图:Gustave Doré
4. 管理环境
(1) 需求文件
使我们的工作成果可被他人重新使用的最简单方法是在项目的根目录(顶层目录)中加入一个需求文件。为此,需要运行pip freeze,以下列出已安装的第三方软件包及其版本号:
并将输出写入文件,我们称之为requirements.txt。
更新软件包或安装新软件包时,都可使用相同的命令重写需求文件。
现在,任何共享项目的人都可以使用requirements.txt文件,通过复制环境以在系统上运行项目。
(2) 复制环境
等等——究竟是怎么做到的?
想象一下,我们的队友Sara从团队的GitHub存储库中删除了测试项目。在她的系统上,项目的目录树如下所示:
注意到有点不寻常的东西了吗?是的,没错!没有venv /文件夹。
我们已经将它从团队的GitHub存储库中删除,因为它的存在可能会引起麻烦。
这就是使用requirements.txt文件对复制项目代码至关重要的一个原因。
要在机器上运行测试项目,Sara需要做的就是在项目的根目录中创建一个虚拟环境:
并使用pip install -r requirements.txt将项目的依赖项安装在活动的虚拟环境中。
现在,Sara系统上的项目环境与我们的系统完全相同。很整洁,不是吗?
(3) 故障排除
可惜事情并不总是按计划进行,总会遇到一些问题。也许错误地更新了特定的站点包后发现自己处于Dependency Hell的第九级,无法运行单行项目代码。也许它没那么糟糕,可能你会发现自己竟处于第七级。
无论你发现自己处于何种程度,解决问题并再次看到希望的最简单方法是重新创建项目的虚拟环境。
大功告成,多亏了requirements.txt文件,又恢复了正常。然而另一个原因是始终要在项目中列入需求文件。
但丁与冰中的叛徒对话——但丁《神曲·地狱篇》第32章
插图:Gustave Doré
5. 虚拟环境如何做到这一点?
想了解更多有关虚拟环境的信息吗?比如,活动环境如何使用正确的Python解释程序并如何找到合适的第三方库?
(1) echo $ PATH
这一切都归结为PATH的价值,它告诉shell使用什么Python实例以及在哪里寻找网站包。在基础shell中,PATH看起来或多或少是这样表现的。
调用Python解释器或运行.py脚本时,shell会按顺序搜索PATH中列出的目录,直到遇到Python实例。要查看PATH首先找到的Python实例,请运行which python3。
通过站点模块(这是Python标准库的一部分)查找此Python实例查找站点包的位置也很容易。
运行脚本venv / bin / activate修改PATH,以便shell在搜索系统的全局二进制文件之前搜索项目的本地二进制文件。
现在shell知道如何使用项目的本地Python实例:
在哪里可以找到项目的本地站点包?
(2) 理智检查
还记得以前的tests / imports-test.py脚本吗?看起来是下面这样:
我们能够在活动环境中运行此脚本,不出现任何问题,是因为环境中的Python实例能够访问项目的本地站点包。
如果运行从项目的虚拟环境外部而来的相同脚本会发生什么?
是的,出现了一个错误,但我们应该这样做。如果我们不这样做,那就意味着我们能够从项目外部访问项目的本地站点包,从而破坏了拥有虚拟环境的整个目的。出现错误的事实证明我们的项目与系统的其他部分完全隔离。
(3) 环境的目录树
有一件事可以帮助整理所有这些信息,即清楚地了解环境目录树的外观。
但丁和维吉尔回到了人世间——但丁《神曲·地狱篇》第34章
插图:Gustave Doré
文章出自:http://qh.itpxw.cn/peixun/software/201948565.html
文章标题:如何使用Python虚拟环境
免责声明:本站文章均由入驻起航学习网的会员所发或者网络转载,所述观点仅代表作者本人,不代表起航学习网立场。如有侵权或者其他问题,请联系举报,必删。侵权投诉
IT培训网 访问该机构站点 报名留言 加为好友 用户等级:注册会员
用户级别:10
机构名称:IT培训网
联 系 人:罗老师
联系电话:13783581536
联系手机:13783581536
在线客服:
在 线 QQ:
电子邮件:
网站域名:http://www.itpxw.cn
注册时间:2016-07-18 11:07
最后登录:2024-02-20 13:02
Java定义方法的格式是什么?IT培训网小编来告诉大家。所谓方法...
大家在Java教程中会学到关于Java消息推送的知识,那么,Java消息...
常用的Java日期格式转换有哪些?IT培训网小编来告诉大家。 1...
Java创建对象数组的方法是什么?IT培训网小编来告诉大家。Ja...