小编典典

virtualenv和pyenv是什么关系?

all

我最近学习了如何在我的工作流程中使用 virtualenv 和 virtualenvwrapper,但是我在一些指南中看到了 pyenv,但我似乎无法理解
pyenv 是什么以及它与 virtualenv 的不同/相似之处。pyenv 是 virtualenv
的更好/更新的替代品还是免费工具?如果后者有什么不同,两者(如果适用,还有 virtualenvwrapper)如何协同工作?


阅读 135

收藏
2022-06-24

共1个答案

小编典典

Pyenvvirtualenv 是非常不同的工具,它们以不同的方式工作以做不同的事情:

  • Pyenv 是一个 bash 扩展——在 Windows 上不起作用——它会拦截你对 python、pip 等的调用,以将它们定向到几个系统 python 工具链之一。因此,您始终可以使用在所选 python 版本中安装的所有库 - 因此,这对于必须在不同 python 版本之间切换的用户来说是件好事。

  • VirtualEnv 是纯python,因此可以在任何地方使用,它会复制( 可选)特定版本的 python 和 pip 本地到激活环境,可能包含也可能不包含指向当前系统工具链的链接,如果它不包含,您可以仅将已知的库子集安装到该环境中。因此,几乎可以肯定它对于测试和部署要好得多,因为您 确切地 知道使用了哪些库、哪些版本,并且全局更改不会影响您的模块。

venv python > 3.3

请注意,从 Python 3.3 开始,有一个名为 venv 的 VirtualEnv 的内置实现(在某些安装中,有一个名为 pyvenv 的包装器 -
此包装器在 Python 3.6
中已弃用
),可能应该优先使用它。为了避免包装器可能出现的问题,直接使用它通常是一个好主意,/path/to/python3 -m venv desired/env/path或者您可以py在带有py -3 -m venv desired/env/path.
它将创建用desired/env/pathconfigure 指定的目录并适当地填充它。一般来说,它非常类似于使用 VirtualEnv。

附加工具

有许多工具值得一提和考虑,因为它们可以帮助使用上述一种或多种工具:

  • VirtualEnvWrapper管理和简化 VirtualEnv- Cross Platform 的使用和管理。
  • pyenv-virtualenv pyenv-installer 安装,它为管理和连接 VirtualEnv 提供了 PyEnv 工具 - 有了它,您可以拥有一个包含多个版本的 python 并在每个版本中创建隔离环境的基本安装 - Linux/OS-十约翰·维萨吉推荐
  • PyInstaller可以获取您的 python 代码,可能在 VirtualEnv 下开发和测试,并将其捆绑起来,以便它可以运行一个没有安装 您的 python 版本的平台 - 请注意,它不是一个交叉编译器,您需要一个 Windows(虚拟-)machine 来构建 Windows 安装等,但即使您可以确定将安装 python 但不能确定 python 的版本和所有库是否与您的代码兼容,它也可以很方便。
2022-06-24