020-pyenv管理python多版本
文章目录
pyenv 管理 python 多版本
1:virtualenv
-
virtualenv 所要解决的是同一个库不同版本共存的兼容问题。例如项目 A 需要用到 requests 的 1.0 版本,项目 B 需要用到 requests 的 2.0 版本。如果不使用工具的话,一台机器只能安装其中一个版本,无法满足两个项目的需求。
-
virtualenv 的解决方案是为每个项目创建一个独立的虚拟环境,在每个虚拟环境中安装的库,对其他虚拟环境完全无影响。所以就可以在一台机器的不同虚拟环境中分别安装同一个库的不同版本。
-
virtualenv 在使用方法上也比较简单:
|
|
2: pyvenv
- pyvenv 与 virtualenv 功能和用法类似。不同点在于:
- 1: pyvenv 只支持 Python 3.3 及更高版本,而 virtualenv 同时支持 Python 2.x 和 Python 3.x;
- 2: pyvenv 是 Python 3.x 自带的工具,不需要安装,而 virtualenv 是第三方工具,需要安装;
- 3: pyvenv 实际上是 Python 3.x 的一个模块 venv,等价于 python -m venv
- pyvenv 的用法和 virtualenv 类似:
|
|
3:pyenv
3.1 pyenv 管理多个 python 版本
-
与上述两个工具不同,pyenv 不是用来管理同一个库的多个版本,而是用来管理一台机器上的多个 Python 版本。主要解决开发中有的项目需要用 Python 2.x,有的项目需要用 Python 3.x 的场景。
-
网上有很多教程,讲如何在一台机器上同时安装 2.x 和 3.x 两个版本,使用时分别用 python、python3 区分。但是这种方法有几个明显的缺点: 安装麻烦:源码手动安装,可能需要手动指定安装路径,创建软连接等; 2.x 和 3.x 分别只能安装一个版本:例如不能同时安装 2.6 和 2.7; 需要人工确定项目使用的 Python 版本,指定错误会导致运行报错。
-
pyenv 支持在一台机器上同时安装 cpython(平时说的 Python)、jython、anaconda、micropython、miniconda、pypy、stackless 等等的任意当前可用版本,例如可以同时安装 Python 2.6.9、2.7.15、3.6.6、3.8-dev 几个版本。
-
pyenv 使用了垫片的原理,可以做到进入项目目录自动选择 Python 版本,使用极为方便,这也是我目前正在使用的工具
-
pyenv 的使用方法:
|
|
3.2 pyenv virtualenv
- pyenv 引入了了 virtualenv 插件,可以在 pyenv 中解决同一个库的版本管理问题;
- 通过 pyenv virtualenv 命令,可以与 virtualenv 类似的创建、使用虚拟环境。但由于 pyenv 的垫片功能,使用虚拟环境跟使用 Python 版本的体验一样,不需要手动执行 activate 和 deactivate,只要进入目录即生效,离开目录即失效;
- pyenv virtualenv 的用法和 pyenv 类似(使用上述安装 pyenv 方法会自动安装 virtualenv 插件):
|
|
文章作者 lucas
上次更新 2025-01-23 (5d3d105)