RrenvvsPython虚拟环境vsJulia环境

所引用的三个“虚拟化”解决方案(R 的renv、Python 的虚拟环境和Julia 的环境)是否具有可比性? “解决方案”或它们在范围和/或实施方面是否存在显着差异?

回答

我无法回答renv,因为我没有这方面的经验。但我至少可以谈谈 Python 虚拟环境和 Julia 环境之间的区别。

正如您所猜测的,Python 虚拟环境和 Julia 环境满足相同的需求:项目隔离和可再现性(以及所有通常与环境相关的东西)。然而,他们以非常不同的方式满足这些需求。

Python 虚拟环境基本上是包含用于创建它们的 Python 堆栈的完整副本的文件夹,即它们包含一个单独的python可执行文件、与之关联的完整堆栈,以及一个site-packages包含安装在该环境中的所有 Python 包的单独文件夹,包括一个分开的副本pipsetuptools。这就是实现完全隔离的方式:每个环境完全独立地处理包的安装。要使用虚拟环境,您activate需要将包含该特定 Python 可执行文件的文件夹的路径临时预先添加到您的 PATH 环境变量中,以便运行python在命令行上运行正确的版本。这使得 Python 虚拟环境相对容易理解和使用,但相对重量级,因为您基本上拥有 Python 堆栈的完整副本,包括一整套包(在多个环境中可能有很多重复的包),对于您的每个环境创建。

另一方面,Julia 构建时内置了环境管理。它是语言的重要组成部分,而不是像 Python 那样的附加组件。因此,环境是从语言本身内部处理的。因此,Julia 环境只是一个带有Project.toml内部文件的文件夹。就这样。Julia 包安装在一个名为depot的位置,同一包的多个版本可以共存。当你add一个包到 Julia 环境,Julia(在依赖解析之后)首先检查所需要的包的版本是否已经在库中。如果是,它将使用该版本的包。只有当所需软件包的所需版本丢失时,它才会下载它。这意味着一个版本的包只会安装一次,多个环境可以重用同一个包,同时仍然彼此隔离。激活在 Julia 中一个环境仅仅意味着让它使用Project.toml在该特定文件夹中决定使用哪些包。这种架构使 Julia 环境特别轻量级。此外,它允许所谓的“堆叠环境”,您基本上可以在其中激活多个环境,并且 Julia 将通过依次搜索它们来选择要使用的包(实际上,通常当您在激活的环境下运行 Julia 时,它始终堆叠在默认环境中,该环境始终处于激活状态)。

我希望这有帮助。如您所见,从实现的角度来看,Python 虚拟环境和 Julia 环境完全不同。


以上是RrenvvsPython虚拟环境vsJulia环境的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>