本文简单记录、比较了自己使用过的几种 Python 虚拟环境工具,并提供了一些常用的命令
对比
下表中的内容仅保证在本文写作时(Python 3.10)的准确性,请自行检查内容是否过期
| 名称 | 内建标准库 | Python 版本隔离 |
|---|---|---|
venv |
✔️ | ❌ |
virtualenv |
❌ | ❌ |
conda |
❌ | ✔️ |
pyvenv |
已弃用 | - |
还有其他同样优秀、功能各异的虚拟环境工具,本文未做详细介绍:
- pyenv/pyenv: Simple Python version management
- pyenv/pyenv-virtualenv: a pyenv plugin to manage virtualenv (a.k.a. python-virtualenv)
- pyenv/pyenv-virtualenvwrapper: an alternative approach to manage virtualenvs from pyenv.
- virtualenvwrapper · PyPI
- pipenv · PyPI
venv
安装
在 Python 3.3 及以后的版本中,venv 被包含在 Python 标准库中,不需要额外的安装步骤
创建
通常都创建在项目下的 venv 目录中(如果项目中有多个 Python 版本,可以创建多个 venv 目录)
Windows
1 | |
Linux
1 | |
使用
Windows (cmd)
1 | |
Linux
1 | |
退出
Windows (cmd)
1 | |
Linux
1 | |
删除
移除 venv 目录即可
virtualenv
virtualenvis a tool to create isolated Python environments. Since Python3.3, a subset of it has been integrated into the standard library under the venv module. Thevenvmodule does not offer all features of this library, to name just a few more prominent:
- is slower (by not having the app-data seed method),
- is not as extendable,
- cannot create virtual environments for arbitrarily installed python versions (and automatically discover these),
- is not upgrade-able via pip,
- does not have as rich programmatic API (describe virtual environments without creating them).
操作方式与上文介绍的 venv 基本一致,但命令行工具名称不同
安装
1 | |
创建
1 | |
这将创建一个与 virtualenv 版本相同的 python 虚拟环境到子目录 venv 中
使用、退出与删除
与上文的 venv 完全相同
conda
安装
简单使用
| 功能 | 命令 |
|---|---|
| 创建环境 | conda create --name $ENVIRONMENT_NAME |
| 创建指定版本的环境 | conda create --name $ENVIRONMENT_NAME python=2.7 |
| 激活环境 | conda activate $ENVIRONMENT_NAME |
| 退出环境 | conda deactivate |
| 安装一个包(激活环境后) | conda install $PACKAGE_NAME |
| 升级一个包(激活环境后) | conda update $PACKAGE_NAME |
| 卸载一个包(激活环境后) | conda remove $PACKAGE_NAME |
| 列出所有可用环境 | conda env list |
| 删除一个环境 | conda env remove --name $ENVIRONMENT_NAME |
更多用法可参考官方文档:Managing conda