Python创建虚拟环境的三种方式(venv | pipenv | conda)

Posted Xavier Jiezou

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python创建虚拟环境的三种方式(venv | pipenv | conda)相关的知识,希望对你有一定的参考价值。


文章目录


引言

什么是虚拟环境?虚拟环境是一个 Python 环境,其中安装的 Python 解释器、库和脚本与安装在其他虚拟环境中的那些是隔离的,而且(默认情况下)安装在系统 Python 中的任何库(即作为操作系统的一部分安装的库)也是隔离的。

为什么需要虚拟环境?这是由于 pip 的特性决定的,同一个环境下,仅允许安装每个包的一个版本。假设,这里有三个包,分别为:A、B 和 C。A 包依赖于 B 包的 v1.0 版本,而 C 包依赖于 B 包的 v2.0 版本。如果我安装了 v1.0 的 B 包,那么 C 包就无法使用;如果安装了 v2.0 的 B 包,那么 A 包就无法使用。因此,在同一个环境下,由于只能安装一个版本的 B 包,导致 A 包和 C 包无法同时使用。

因此,我们需要创建多个 Python 的虚拟环境来解决上述问题。在环境 1 下安装 v1.0 的 B 包,然后就能使用 A 包,在环境 2 下安装 v2.0 的 B 包,就能使用 C 包。也就说,不同虚拟环境下的包是互不影响的,避免了包冲突问题。

此外,我们推荐每进行一个新的项目开发,就创建一个仅适用于该项目的虚拟 Python 环境。这样有助于包管理,同时还能非常清晰地列出项目开发用到的所有包,生成一键安装清单,方便后期的部署或复现。

本文将介绍三种最常用的创建 Python 虚拟环境的方式,让您轻松掌握创建及使用虚拟环境的方法。

教程

venv

Python2 版本创建虚拟环境常使用一个名为 virtualenv 的第三方包。从 Python3.3 以后,标准库就内置了一个名为 venv 的模块,我们可以用它来创建虚拟环境,完全替换 virtualenv。

安装

不需要安装,Python3.3 及以上版本的内置标准模块。

用法

  1. 创建环境
python -m venv ENV_DIR

ENV_DIR 指定存放环境的目录,一般使用 venv,这是一个不成文的规定。

虚拟环境的目录树结构如下(Windows):

.venv
    ├─pyvenv.cfg
    ├─Include
    ├─Lib
    │  └─site-packages
    │      ├─pip
    │      ├─pip-20.2.3.dist-info
    │      ├─pkg_resources
    │      ├─setuptools-49.2.1.dist-info
    │      ├─easy_install.py
    │      └─__pycache__
    └─Scripts
    │  └─activate
    │  └─activate.bat
    │  └─Activate.ps1
    │  └─deactivate.bat
    │  └─easy_install-3.9.exe
    │  └─easy_install.exe
    │  └─pip.exe
    │  └─pip3.9.exe
    │  └─pip3.exe
    │  └─python.exe
    │  └─pythonw.exe

pyvenv.cfg 是一个配置文件,包含三个参数:

  • home:指向运行命令的 Python 安装目录;
  • include-system-site-packages:是否使用系统 Python 环境中安装的包。默认是 false,即不使用;
  • version:Python 版本号。
  1. 激活环境
  • Windows
.\\ENV_DIR\\Scripts\\activate
  • Unix/macOS
source ENV_DIR/bin/activate
  1. 退出环境
deactivate
  1. 删除环境

删除整个环境的安装目录即可。

pipenv

pipenv 将包管理工具 pip 和虚拟环境创建工具 virtualenv 有机地结合到了一起,实现了开发环境和生产环境依赖的分离,旨在构建专属于 Python 的开发工作流,达到类似于 npm,yarn 等工具的效果。

安装

pip install pipenv

用法

  1. 环境管理
  • 创建环境:pipenv install
  • 激活环境:pipenv shell
  • 退出环境:exit
  • 删除环境:pipenv --rm

pipenv install 命令会根据系统默认 Python 版本来创建虚拟环境,并生成用于依赖包管理的 PipfilePipfile.lock 文件。当你将项目分享给他人的时候,执行 pipenv install 命令会创建一个虚拟环境并自动安装 Pipfile 中指定的依赖包。

  1. 包管理
  • 安装包:
    • 用包名安装并写入 Pipfile 的生产环境:pipenv install requests
    • 用包名安装并写入 Pipfile 的开发环境:pipenv install pytest --dev
    • 安装 Pipfile 中列出的所有生产环境包:pipenv install
    • 安装 Pipfile 中列出的所有开发环境包:pipenv install --dev
  • 卸载包:
    • 卸载指定包并从 Pipfile 中移除:pipenv uninstall requests
    • 卸载所有生产环境包(不从Pipfile中移除):pipenv uninstall --all
    • 卸载所有开发环境包并从 Pipfile 中移除:pipenv uninstall --all-dev
  1. 配置 pypi 镜像

PipfilePipfile.lock 中对应的 pypi 源(https://pypi.org/simple)修改为国内镜像源,可以解决包下载速度慢的问题。

清华大学:https://pypi.tuna.tsinghua.edu.cn/simple
阿里云:http://mirrors.aliyun.com/pypi/simple/
中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/
豆瓣:http://pypi.douban.com/simple/

conda

Anaconda 是一个大型的环境管理系统,支持 Python/R 在内的多种语言。安装 Anaconda 或 Miniconda(精简版) 之后就能使用 conda 命令来创建和管理 Python 环境。

安装

Miniconda软件安装教程(Windows)
Miniconda软件安装教程(Linux)

用法

  1. 创建环境
conda create -n ENV_NAME python=3.9
  1. 激活环境
conda activate ENV_NAME
  1. 退出环境
conda deactivate
  1. 删除环境
conda env remove -n ENV_NAME

总结

  • venv:内置模块,小巧轻便,使用灵活;
  • pipenv:Python 开发专属,定义了一套完整的 Python 开发工作流;
  • conda:大型的环境管理系统,Python 开发必备软件。

conda 可以创建多个不同版本的 Python 环境,而 venv 和 pipenv 只能根据系统中已有 Python 版本创建。

拓展

在虚拟环境中可通过 pip 命令来进行管理,常用的包管理命令如下(以 requests 包为例):

  • 安装包:pip install requests
  • 升级包:pip install --upgrade requests
  • 卸载包:pip uninstall requests

此外,安装指定版本的包可通过命令 pip install requests==2.18.4 实现。如果有多个包,可将包名及其对应的版本(中间用==连接,不同包之间换行)写入一个名为 requirements.txt 的文件,然后通过如下命令安装:

pip install -r requirements.txt

同理,因为是在虚拟环境中,所以该环境中的安装的所有包都是开发需要用到的,没有其他项目的包,可以通过如下命令导出所有安装包的清单,方便后续复现或持续开发:

pip freeze > requirements.txt

参考

Python官方文档->venv
Python用户指南->使用 pip 和虚拟环境安装包
pipenv开源地址

插画

【画师】飴玉コン 【P站ID】78140545

以上是关于Python创建虚拟环境的三种方式(venv | pipenv | conda)的主要内容,如果未能解决你的问题,请参考以下文章

Python创建虚拟环境的三种方式

Python创建虚拟环境的三种方式

Python创建虚拟环境的三种方式

python3 venv 虚拟环境使用方法

Python3 venv 创建虚拟环境

Python 3 使用venv创建虚拟环境