Python创建虚拟环境

Posted by Will on May 1, 2022

“walk beside you ”

前言

  有形的东西迟早会凋零,但只有回忆是永远不会凋零的 —— 《火影忍者》


正文

  我们在用Python时,都会遇到安装三方包的情况通过pip。但是如果直接使用pip来安装,系统中只能安装每个包的一个版本,不同项目依赖不同版本的包就会产生冲突。所以如果我们直接使用本地的Python环境,会导致整体的开发环境相当混乱而不易管理,这时候我们就需要开辟一个独立干净的空间进行开发和部署,虚拟环境就孕育而生。 经常使用的有 virtualenv pipenv conda

Virtualenv

Virtualenv 是目前最流行的 Python 虚拟环境配置工具,同时支持Python2和Python3,也可以为每个虚拟环境指定Python解释器。

请预先安装pip或者pip3(安装pip的三种方式),以pip3为例

一旦正常安装pip后,可使用以下命令安装Virtualenv:

pip3 install virtualenv

在终端或命令提示符下进入(cd)选择的目录搭建一个虚拟环境:

virtualenv venv

如果存在多个python解释器,可以选择指定一个Python解释器(比如python3.6),没有指定则由系统默认的解释器来搭建

virtualenv -p /usr/bin/python3.8 venv

将会在当前的目录中创建一个名venv的文件夹,这是一个独立的python运行环境,包含了Python可执行文件, 以及 pip库的一份拷贝,但第三方包需要重新安装。

要开始使用虚拟环境,其需要被激活:

source env/bin/activate

停用虚拟环境:

deactivate

Pipenv

pipenv 是 Pipfile 主要倡导者、requests 作者 Kenneth Reitz 写的一个命令行工具,主要包含了Pipfile、pip、click、requests和virtualenv,能够有效管理Python多个环境,各种第三方包及模块。

pipenv所解决的问题:

  • requirements.txt 依赖管理的局限
  • 多个项目依赖不同第三方库、包版本问题
  • 依赖分析

pipenv的特性:

  • pipenv集成了pip,virtualenv两者的功能,且完善了两者的一些缺陷。
  • 过去用virtualenv管理requirements.txt文件可能会有问题,Pipenv使用Pipfile和Pipfile.lock,后者存放将包的依赖关系,查看依赖关系是十分方便。
  • 各个地方使用了哈希校验,无论安装还是卸载包都十分安全,且会自动公开安全漏洞。
  • 通过加载.env文件简化开发工作流程。
  • 支持Python2 和 Python3,在各个平台的命令都是一样的。

可使用以下命令安装pipenv

pip3 install pipenv

接下来,通过使用以下命令创建一个新环境,在指定目录下创建虚拟环境, 会使用本地默认版本的python

pipenv install

如果要指定版本创建环境,可以使用如下命令

pipenv --two  # 使用当前系统中的Python2 创建环境
pipenv --three  # 使用当前系统中的Python3 创建环境
pipenv --python 3  # 指定使用Python3创建环境
pipenv --python 3.6  # 指定使用Python3.6创建环境
pipenv --python 2.7.14  # 指定使用Python2.7.14创建环境

激活虚拟环境

pipenv shell

删除虚拟环境

pipenv --rm

使用exit退出当前虚拟环境

Conda

Anaconda(官方网站)就是可以便捷获取包且对包能够进行管理,同时对环境可以统一管理的发行版本。Anaconda包含了conda、Python在内的超过180个科学包及其依赖项。Anaconda也有自己的虚拟环境系统,称为conda。

可以通过以下命令创建虚拟环境

conda create --name environment_name python=3.6

激活虚拟环境

conda activate

conda环境的卸载

conda remove -n environment_name --all