Python中virtualenv和pyenv的使用对比与选择建议
一直用 virtualenv,有用过 pyenv 的么?能不能说说对比感受?
Python中virtualenv和pyenv的使用对比与选择建议
这两个就不是同类工具,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切过去就行。
怎么选? 这俩不是二选一的关系。通常的流程是:
- 用 pyenv 安装你需要的Python版本。
- 用 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 +1
pyenv-virtualenv 了解一下
这俩和 pipenv 都不在一个层级。pipenv 只是 requirements.txt 的替代品
不要问,问就是 poetry 一把梭
万物基于 virtualenv
一直用 pyenv + pyenv-virtualenv 体验良好
pipenv 了解下
pipenv 了解下 
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 了
anaconda 真香+1
用完 pipenv 之后,此贴可以终结了


