我最近学习了如何在我的工作流程中使用virtualenv和virtualenvwrapper,但我在一些指南中看到了pyenv,但我似乎无法理解pyenv是什么,以及它与virtualenv有何不同/相似之处。pyenv是virtualenv的更好的/更新的替代品,还是免费的工具?如果是后者,它有什么不同之处?两者(如果适用,还包括virtualenvwrapper )是如何协同工作的?
发布于 2015-04-30 01:30:11
Pyenv和virtualenv是非常不同的工具,它们以不同的方式工作来做不同的事情:
venv python > 3.3
请注意,从Python3.3开始,有一个名为venv的VirtualEnv内置实现(在某些安装中,有一个名为pyvenv的包装器-这个包装器是deprecated in Python 3.6),可能应该优先使用它。为了避免包装器可能出现的问题,通过使用/path/to/python3 -m venv desired/env/path
直接使用它通常是一个好主意,或者您可以在带有py -3 -m venv desired/env/path
的windows上使用优秀的py
python选择器。它将创建使用desired/env/path
configure指定的目录,并相应地填充该目录。一般来说,它非常类似于使用VirtualEnv。
其他工具
有许多工具值得一提和考虑,因为它们可以帮助使用上面的一个或多个:
发布于 2017-09-21 20:32:15
简短版本:
virtualenv
允许您通过从现有onespyenv
克隆来创建本地(每个目录)独立的python安装允许您安装(从源代码构建) Python的不同版本彼此并排;然后您可以使用virtualenv克隆它们或使用pyenv选择在任何给定时间运行哪个版本更长的版本:
Virtualenv允许您创建自定义Python安装,例如在项目的子目录中。这是通过从系统上某处现有的Python安装克隆来完成的(复制一些文件,重用/共享一些文件以节省空间)。因此,您的每个项目都可以在各自的virtualenv下拥有自己的python
(甚至多个)。对于一些/所有的虚拟环境来说,甚至拥有相同版本的python
(例如3.8.5)而没有冲突,这是完全没有问题的--它们分开生活,彼此不了解。如果您想要使用shell中的任何一个python
,您必须对其进行activate
(通过运行一个脚本,该脚本将临时修改您的PATH
,以确保virtualenv的bin/
目录位于第一位)。从那时起,调用python
(或pip
等)。将调用该PATH
的版本,直到您对其执行deactivate
操作(这将恢复virtualenv)。也可以使用其绝对路径来调用virtualenv Python -这可能很有用,例如,当从脚本调用Python时。
Pyenv的运行范围比virtualenv更广。它用于安装(从源代码构建)任意版本的Python (它保存可用版本的注册表)。默认情况下,它们都是在~/.pyenv
下并排安装的,因此它们比virtualenv“更具全局性”。然后,它允许您配置在使用python
命令时运行哪个版本的Python (不带virtualenv)。这可以在全局级别完成,也可以单独按目录完成(通过在目录中放置一个.python-version
文件)。这是通过将pyenv的shim python
脚本前缀到您的PATH
(永久地,不像在virtualenv中)来完成的,然后由它决定调用哪个“真正的”python
。您甚至可以将pyenv配置为调用您的一个virtualenv python(通过使用pyenv-virtualenv
插件)。您还可以复制Python版本(通过为它们指定不同的名称),并让它们不同。
使用pyenv可以方便地安装Python以供后续的virtualenv使用。
https://stackoverflow.com/questions/29950300
复制相似问题