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

  • Python创建虚拟环境的三种方式
    • 首先:为什么需要虚拟环境?
  • Pipenv vs Virtualenv vs Conda
    • 1. Virtualenv
    • 2. Pipenv
    • 3. Conda
  • 参考资料

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

首先:为什么需要虚拟环境?

在使用Python语言时,通过pip(pip3)来安装第三方包,但是由于pip的特性,系统中只能安装每个包的一个版本。但是在实际项目开发中,不同项目可能需要第三方包的不同版本,迫使我们需要根据实际需求不断进行更新或卸载相应的包,而如果我们直接使用本地的Python环境,会导致整体的开发环境相当混乱而不易管理,这时候我们就需要开辟一个独立干净的空间进行开发和部署,虚拟环境就孕育而生。

这里,我们以Pycham创建新项目时候环境选择的环境为切入点,如下所示:

Pipenv vs Virtualenv vs Conda

1. Virtualenv

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

请预先安装pip或者pip3(安装pip的三种方式),以pip3为例,一旦正常安装pip后,可使用以下命令安装Virtualenv:

pip3 install virtualenv

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

virtualenv venv

如果存在多个python解释器,可以选择指定一个Python解释器(比如python3.6),没有指定则由系统默认的解释器来搭建(变更默认的python版本可以看看 {% post_link Python/使用update-alternatives管理多个版本的Python %}):

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

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

source env/bin/activate

停用虚拟环境:

deactivate

virtualenv 的一个最大的缺点就是,每次开启虚拟环境之前要去虚拟环境所在目录下的 bin 目录下 source 一下 activate。这时候virtualenvwrapper出现了,它对不同的虚拟环境使用不同的目录进行管理,并且还省去了每次开启虚拟环境时候的 source 操作,使得虚拟环境更加好用。

pip3 install virtualenvwrapper

vim ~/.bashrc开始配置virtualenvwrapper:

export WORKON_HOME=$HOME/.virtualenvs
source /usr/local/bin/virtualenvwrapper.sh

接着执行 source ~/.bashrc(或./zshrc)。

注意:修改.bashrc还是.zshrc取决于你使用的那种 shell。

Virtualenv相关命令总结:

  • workon: 打印所有的虚拟环境;
  • mkvirtualenv xxx: 创建 xxx 虚拟环境,可以–python=/usr/bin/python3.6 指定python版本;
  • workon xxx: 使用 xxx 虚拟环境;
  • deactivate: 退出 xxx 虚拟环境;
  • rmvirtualenv xxx: 删除 xxx 虚拟环境。
  • lsvirtualenv : 列举所有的环境。
  • cdvirtualenv: 导航到当前激活的虚拟环境的目录中,比如说这样您就能够浏览它的 site-packages。
  • cdsitepackages: 和上面的类似,但是是直接进入到 site-packages 目录中。
  • lssitepackages : 显示 site-packages 目录中的内容。

总结:Virtualenv的优点:

  1. 使得不同Python应用的开发环境相互独立
  2. 开发环境升级不影响其他应用的开发环境,也不会影响全局的环境(默认开发环境是全局开发环境),因为虚拟环境是将全局环境进行私有的复制,当我在虚拟环境进行 pip install 时,只会安装到选择的虚拟环境中
  3. 它可以防止系统中出现包管理混乱和版本的冲突

2. 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,在各个平台的命令都是一样的。

pip是用于安装和管理软件包的包管理器。

可使用以下命令安装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退出当前虚拟环境。

3. Conda

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

conda是包及其依赖项和环境的管理工具。
适用语言:Python, R, Ruby, Lua, Scala, Java, JavaScript, C/C++, FORTRAN。
适用平台:Windows, macOS, Linux
用途:

  • 快速安装、运行和升级包及其依赖项。
  • 在计算机中便捷地创建、保存、加载和切换环境。

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

conda create --name environment_name python=3.6

激活虚拟环境:

conda activate

conda环境的卸载:

conda remove -n environment_name --all

参考资料

  1. https://zhuanlan.zhihu.com/p/163023998
  2. https://blog.csdn.net/zxbylx1120471286/article/details/107187517
  3. https://blog.csdn.net/weixin_40922744/article/details/103721870?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-3.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-3.control
  4. https://blog.csdn.net/sinat_28442665/article/details/86292354

【Python】Python创建虚拟环境的三种方式相关推荐

  1. Python实现微信支付(三种方式)

    Python实现微信支付(三种方式) 微信.支付宝二维码聚合SDK下载 点我下载 关注公众号"轻松学编程"了解更多. 如果需要python SDk源码,可以加我微信[1257309 ...

  2. 用python打开文件夹的三种方式

    用python打开文件夹的三种方式 一.利用explorer.exe import os# 利用explorer.exe执行 start_directory = r'C:\代码\软件包' os.sys ...

  3. java多线程w3c_Java创建多线程的三种方式

    前言 这篇文章主要讲述线程的概念.组成.Java创建多线程的三种方式以及线程的类型. 线程概念 线程和进程的区别 **进程:**正在运行的程序,例如:你打开 的qq音乐.exe程序,其由PCB(进程控 ...

  4. js学习-DOM之动态创建元素的三种方式、插入元素、onkeydown与onkeyup两个事件整理...

    动态创建元素的三种方式: 第一种: Document.write(); <body> <input type="button" id="btn" ...

  5. java bean 工厂模式_Spring框架通过工厂创建Bean的三种方式实现

    工厂模式 Spring中bean的创建,默认是框架利用反射new出来的bean实例.有时候也会有一些复杂的情况. 假设有一个飞机,属性如下,现在需要造很多同型号的飞机,那么唯一需要改变的属性只有Dri ...

  6. 把对象的创建交给spring来管理——  1.创建bean的三种方式     2.bean对象的作用范围     3.bean对象的生命周期

    把对象的创建交给spring来管理 spring对bean的管理细节     1.创建bean的三种方式     2.bean对象的作用范围     3.bean对象的生命周期 创建Bean的三种方式 ...

  7. java 创建线程_【80期】说出Java创建线程的三种方式及对比

    点击上方"Java面试题精选",关注公众号 面试刷图,查缺补漏 >>号外:往期面试题,10篇为一个单位归置到本公众号菜单栏->面试题,有需要的欢迎翻阅. 一.Ja ...

  8. 五、创建Bean的三种方式

    五.创建Bean的三种方式 转载于:https://www.cnblogs.com/ljiwej/p/7280614.html

  9. 深入解析React创建组件的三种方式

    eact创建组件的三种方式: 1.函数式无状态组件 2.es5方式React.createClass组件 3.es6方式extends React.Component 三种创建方式的异同 1.函数式无 ...

最新文章

  1. (读书随笔)接口和抽象类的一些区别总结
  2. 「第三只手」机械臂:采水果,破墙壁!
  3. 脚本语言+文档对象模型基于浏览器客户端的编程
  4. 可以供MFC调用的,QT实现的DLL(qtwinmigrate实现)
  5. 30 PP配置-生产车间控制-定义计划策略
  6. 数据库---连接查询,数据表之间的并交集关系
  7. python基本代码教程-Python基础教程(第3版)
  8. NYOJ 364 田忌赛马
  9. Ext3文件读写流程概述
  10. excel图表交互联动_Excel图表联动的三种方法
  11. UI设计作品中经常会用到的设计技巧?|优漫动游
  12. Verilog并行加法树实现
  13. 如何看懂蓝桥杯单片机(CT107S)原理图
  14. c语言水仙花数作业,c语言水仙花数(c语言水仙花数的编程)
  15. 【概率】甲乙射击比赛,单局甲胜率0.6,3局2胜和5局3胜两种赛制甲如何选择?无限多局,甲获胜概率?
  16. 书写NDIS过滤钩子驱动实现ip包过滤
  17. TCP归纳总结,一图流
  18. shell脚本自动更新ca证书
  19. Matlab进阶绘图第8期—聚类/分类散点图
  20. 请帮我查看一下2.19号邢台发往北京高铁的班次,以及各个班次的时间

热门文章

  1. Internet主要的网络协议
  2. 网络营销面临的问题有哪些?
  3. 微信小程序之快递查询(完整版)
  4. 巨简单 在eclips上面新建一个网页动态项目
  5. how2j学习总结-未完
  6. Mysql错误: Incorrect string value: '\xEF\xBF\xBD\xEF\xBF\xBD...' for column 'sql_info' at row 72
  7. 软件工程之用户界面设计
  8. OGNL表达式的用法
  9. ORA-02085: database link %s connects to %s 解决思路
  10. FPGA学习笔记(2020.04.24)业精于勤荒于嬉,成于思毁于随