Python中virtualenv和pyenv的使用对比与选择建议

一直用 virtualenv,有用过 pyenv 的么?能不能说说对比感受?


Python中virtualenv和pyenv的使用对比与选择建议
23 回复

这两个就不是同类工具,pyenv 是用来管理不同 Python 版本的。


virtualenv和pyenv是解决不同问题的工具,经常搭配使用。

virtualenv 是一个虚拟环境管理器。它在一个项目目录里创建独立的Python环境,让你可以安装特定版本的包,不会和系统或其他项目的包冲突。比如,项目A用Django 2.2,项目B用Django 3.2,用virtualenv就能轻松搞定。

pyenv 是一个Python版本管理器。它让你在同一台机器上安装和切换多个Python解释器版本(如3.7, 3.8, 3.9)。比如,你系统默认是Python 3.8,但老项目需要跑在3.6上,用pyenv切过去就行。

怎么选? 这俩不是二选一的关系。通常的流程是:

  1. pyenv 安装你需要的Python版本。
  2. virtualenv (或者它的升级版 venv,Python 3.3+自带) 基于某个Python版本创建独立的项目环境。

简单例子:

# 1. 用pyenv安装Python 3.9.5
pyenv install 3.9.5

# 2. 切换到3.9.5
pyenv local 3.9.5

# 3. 用这个版本的Python创建虚拟环境
python -m venv my_project_env

# 4. 激活虚拟环境
source my_project_env/bin/activate  # Linux/Mac
# 或者
my_project_env\Scripts\activate  # Windows

# 现在你就在一个干净的、基于Python 3.9.5的环境里了

一句话建议: 用pyenv管Python解释器版本,用virtualenv/venv管项目依赖环境。

pyenv 还是依赖于 virtualenv。

pyenv 是 virtualenv 的一个”超集“,可以用来管理不同的 python 版本,同时也能用来管理虚拟环境,是一个非常有用的工具。

应该与 pipenv 做比较

pipenv +1

pyenv-virtualenv 了解一下

这俩和 pipenv 都不在一个层级。pipenv 只是 requirements.txt 的替代品

不要问,问就是 poetry 一把梭

万物基于 virtualenv

一直用 pyenv + pyenv-virtualenv 体验良好

pipenv 了解下

pipenv 了解下

这两个我都是一起用的,pyenv 管理系统中多个版本 py,项目中先用 pyenv 切换到指定版本,然后 virtualenv 基于当前版本创建一个虚拟环境。

pyenv + virtualenv + pipenv 的飘过……

3.3 以后自带 venv 已经不需要 virtualenv 了

用 pyenv 来装 py,装了后用 venv/virtualenv 建个虚拟环境

anaconda 真香

一直用 pyenv,pyenv 同时管理 Python 版本和虚拟环境。其实 pyenv 和 miniconda/anaconda 类似,对于虚拟环境和 Python 版本一视同仁。*nix 上 pyenv,Windows 上 miniconda。( anaconda=miniconda+内置一堆科学计算包)

感觉?你用用不就知道了。pyenv 和 miniconda 都是 virtualenv 超集:1 )集中管理虚拟环境位置,而不是放在项目目录下,这样方便清理。2 )附带管理 Python 版本。

项目开发再配合一个 pipenv,记录依赖信息要比 pip 输出的 requirements.txt 强百倍。

三个都用过,目前长期坚持 pipenv 了

用了 pipenv 就知道什么才是虚拟环境的最终解了

anaconda 真香+1

用完 pipenv 之后,此贴可以终结了

回到顶部