python - virtualenv和pyenv是什么关系?

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

最佳答案

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

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

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

venv python > 3.3

请注意,从 Python 3.3 开始,有一个名为 venv 的 VirtualEnv 的内置实现(在某些安装中,有一个名为 pyvenv 的包装器 - 这个包装器是 deprecated in Python 3.6 ),可能应该优先使用它。为了避免包装器可能出现的问题,最好直接使用 /path/to/python3 -m venv desired/env/path 来使用它,或者您可以使用出色的 py 带有 py -3 -m venv desired/env/path 的 windows 上的 python 选择器。它将创建用 desired/env/path configure 指定的目录并适本地填充它。总的来说,它非常类似于使用 VirtualEnv。

其他工具

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

  • VirtualEnvWrapper管理和简化 VirtualEnv - 跨平台的使用和管理。
  • pyenv-virtualenv , 由 pyenv-installer 安装,它为管理和连接 VirtualEnv 提供了 PyEnv 工具 - 有了它,您可以拥有一个包含多个版本的 python 的基本安装,并在每个版本中创建隔离环境 - Linux/OS-X由 Johann Visagie 建议
  • PyInstaller可以获取您的 python 代码,可能在 VirtualEnv 下开发和测试,并将其捆绑起来,以便它可以运行一个没有安装 您的版本 python 的平台 - 请注意,它不是您的交叉编译器将需要一台 Windows(虚拟)机器来构建 Windows 安装等,但即使您可以确定将安装 python 但不能确定 python 的版本和所有库是否与你的代码。

https://stackoverflow.com/questions/29950300/

相关文章:

python - 如何以正确的方式平滑曲线?

linux - 如何在 GNU/Linux 上设置 Subversion (SVN) 服务器 - U

python - 在 Python 脚本中,如何设置 PYTHONPATH?

unix - 创建守护进程时执行双叉的原因是什么?

linux - 确保只有一个 Bash 脚本实例正在运行的最佳方法是什么?

linux - CURL 用于访问需要从其他页面登录的页面

shell - 如何将文本 append 到文件?

python - 如何在python中向后循环?

python - isinstance ('aaa' , basestring) 和 isinsta

python - 安装pycurl时出现"Could not run curl-config: [E