我们在使用Pycharm中的Project Interpreter 发现有4中选择: Virtualenv Environment、Conda Environment、System Interpreter、Pipenv Environment,那么每个的具体含义是什么呢?下面我们就来学习一下吧。

System Interpreter 如字面意思是系统里安装的本地Python作为解释器,一般很少用,不推荐

virtualenv:

virtualenv 是目前最流行的 Python 虚拟环境配置工具。它不仅同时支持 Python2 和 Python3,而且可以

为每个虚拟环境指定 Python 解释器,并选择不继承基础版本的包。

virtualenv 的优点

使得不同Python应用的开发环境相互独立

开发环境升级不影响其他应用的开发环境,也不会影响全局的环境(默认开发环境是全局开发环境),因为虚拟环境是将全局环境进行私有的复制,当我在虚拟环境进行 pip install 时,只会安装到选择的虚拟环境中。

它可以防止系统中出现包管理混乱和版本的冲突

virtualenv 的简单使用

pip 安装 virtualenv

pip3 install virtualenv # 使用自己对应安装的pip版本

1

创建虚拟环境目录

mkdir myproject

cd myproject

1

2

创建一个独立的Python运行环境: myenv

virtualenv --no-site-packages myenv

1

注: 1)参数:--no-site-packages (可省略) 其意义在于不复制已经安装到系统Python环境中的所有第三方包从而得到一个“纯净”的运行环境。

2) 此时当前目录下会生成一个名为:“myenv” 的目录,该目录中存放刚生成的虚拟环境文件

激活虚拟运行环境

# Windows:

myenv\Scripts\activate.bat

# Linux:

source myenv/bin/activate

1

2

3

4

注: 以上命令执行完后会发现命令提示符变了,有个(myenv)前缀,表示当前环境是一个名为“myenv”的Python环境,此时可以在该环境中按照我们熟悉的方式安装库、运行程序等。

安装各种第三方包,并运行Python命令

pip install jieba

python myapp.py

1

2

注: 因为此时虚拟环境已经激活,所以可以直接使用命令pip、python而不是pip3和python3。

使用deactivate命令退出当前的myenv环境

deactivate

1

其他详细介绍,请参考 virtutalenv 官网:https://virtualenv.pypa.io/en/latest/reference/

venv:

Python 从3.3 版本开始,自带了一个虚拟环境 venv,在 PEP-405 中可以看到它的详细介绍。它的很多操作都和 virtualenv 类似,但是两者运行机制不同。因为是从 3.3 版本开始自带的,这个工具也仅仅支持 python 3.3 和以后版本。所以,要在 python2 上使用虚拟环境,依然要利用 virtualenv 。

有关venv与virtualenv的区别,virtualenv官网: https://virtualenv.pypa.io/en/latest/reference/#compatibility-with-the-stdlib-venv-module 有详细介绍,博主英文水平不够,请有需要的同学自行解读。

venv 安装

# Windows 中venv已经以标准库的形式存在,不用再单独安装

# Linux

sudo apt-get install python3-venv # 如有不同版本的Python3,可指定具体版本venv:python3.5-venv

1

2

3

在当前目录创建一个独立的Python运行环境: myenv

# Windows

py -3 -m venv myenv

# Linux

python3 -m venv myenv

1

2

3

4

激活虚拟运行环境、安装第三方包、运行程序及退出虚拟环境等操作均与 virtualenv 相同,在此不再赘述。

其他详细介绍,请参考 venv 官网:https://docs.python.org/zh-cn/3/tutorial/venv.html

什么是conda

最近有人问我venv和conda有什么区别,其实在我看来区别不是特别大。主要如下。

如果说venv是虚拟环境管理器,pip是包管理器,那么conda则是两者的结合。

遗憾的是conda的包管理器做的一般且会安装过多依赖如TensorFlow自动安装cudnn(在主机配置了cudnn的情况下),大多数时候还是使用pip安装包。

但是,注意,pip只能安装Python的包,conda可以安装一些工具软件,即使这些软件不是基于Python开发的。

但是conda的虚拟环境管理还是可以的,一般使用venv会在该项目下创建虚拟环境,再不济也会在项目下创建venv的文件夹(含配置文件),当然pycharm下创建虚拟环境另说;然而conda每个虚拟环境不会占用项目文件夹的空间,它创建在用户设定的一个位置,这使得多个项目共享一个虚拟环境更加方便(只是方便,venv也是可以的,但是venv一般占用项目文件夹空间,而且venv命令行使用具有局限性)。

conda虚拟环境是独立于操作系统解释器环境的,即无论操作系统解释器什么版本(哪怕2.7),我也可以指定虚拟环境python版本为3.6(见文章开头所说原博客),而venv是依赖主环境的。

对于科学计算和大数据领域的人,conda是环境自动集成了numpy这样的主流科学计算包的,venv每个包都要自行下载。

conda有图形化环境管理器,venv没有。(虽然开发人员几乎不用图形界面conda)

python虚拟环境是什么意思_python的虚拟环境详解相关推荐

  1. python编码问题无法复现_Python编码问题详解

    1. 基本概念 字符集(Character set) 解释:文字和符合的总称 常见字符集: Unicode字符集 ASCII字符集(Unicode子集) GB2312字符集 编码方法(Encoding ...

  2. python随机数程序源码_Python 实现随机数详解及实例代码

    Python3实现随机数 random是用于生成随机数的,我们可以利用它随机生成数字或者选择字符串. random.seed(x)改变随机数生成器的种子seed. 一般不必特别去设定seed,Pyth ...

  3. 简述python文件操作的流程_Python文件操作详解

    这篇文章主要介绍了Python 文件操作的详解及实例的相关资料,希望通过本文大家能够理解掌握Python 文件操作的知识,需要的朋友可以参考下 Python 文件操作的详解及实例 一.文件操作 1.对 ...

  4. python字典操作的方法_python 字典操作方法详解

    python 字典操作方法详解 一.总结 一句话总结: 字典就是键值对映射 ,像js和php中的键值对数组:{'name':'jamnes','age':'32'} 1.python字典的增删改查? ...

  5. 关于python语言的浮点数类型_Python 浮点数数据类型详解(float)[学习 Python 必备基础知识][看此一篇就够了]...

    原博文 2020-04-20 15:25 − > 您的"关注"和"点赞",是信任,是认可,是支持,是动力...... > 如意见相佐,可留言. &g ...

  6. python编程入门单例_Python单例模式实例详解

    本文实例讲述了Python单例模式.分享给大家供大家参考,具体如下: 单例模式:保证一个类仅有一个实例,并提供一个访问他的全局访问点. 实现某个类只有一个实例的途径: 1,让一个全局变量使得一个对象被 ...

  7. python flask框架是什么_Python Flask框架详解

    原博文 2020-04-08 23:33 − 记录请求使用的HTTP方法 Flask 本身相当于一个内核,其他几乎所有的功能都要用到扩展,都需要用第三方的扩展来实现,比如可以用 Flask 扩展加入O ...

  8. python字典键值唯一_python字典操作详解

    python字典是一个无序.以键值对存储的数据类型,数据关联性强.唯一一个映射数据类型.键:必须是可哈希(不可变的数据类型:字符串.数字.元组.bool)值,并且是唯一的 None: none 是一个 ...

  9. python布尔值的作用_Python基础教程详解布尔变量的作用

    布尔值也叫真值,在Python开发(http://www.maiziedu.com/course/python-px/)中所有的值都被解释为真值,标准的真值为true和false.那么布尔变量在Pyt ...

  10. python中可变参数*args传入函数时的存储方式为_python 中文读法详解Python函数可变参数定义及其参数传递方式...

    Python函数可变参数定义及其参数传递方式详解 python中 函数不定参数的定义形式如下 1. func(*args) 传入的参数为以元组形式存在args中,如: def func(*args): ...

最新文章

  1. c# wpf listbox 高度_农村太阳能路灯厂家报价表2020(不同高度)
  2. 逆向建模软件介绍_逆向技术在2代机修理中的应用
  3. JPEG 原理详细实例分析及其在嵌入式 Linux 中的应用
  4. html菜鸟ruby,Ruby 循环
  5. C++开发WPF,开发环境配置
  6. linux磁盘fio压力测试,fio进行磁盘压力测试
  7. android开发我的新浪微博客户端-载入页面UI篇(1.1)
  8. axf下不了 keil5jlink_keil无法生成axf文件之解决方法
  9. 仿微信的语音点击播放时的语音图标动画效果
  10. python解析mht文件_请教怎么解析.mht文件为html文件
  11. 原创玄幻小说--那时花开--第一章前序
  12. Android 自启项管理器工具
  13. 江南爱软装十大品牌 提升格调的软装种类
  14. 莱诺医疗入驻美敦力医疗创新加速器 ;和瑞基因与阿里健康正式签署战略合作协议 | 医药健闻...
  15. Android调用聚 合 API
  16. 【程序哥】分析 网易一元夺宝是否有作弊空间,真像媒体所说的吗?
  17. X线DR医学图像 --- 直方图的窗宽窗位调整(Matlab篇)
  18. BIO NIO AIO
  19. 真相,为什么大厂一边裁员,一边招人?
  20. 《软件方法(上)业务建模和需求》第2版 勘误(2021年10月21日更新)

热门文章

  1. Fast and Accurate Recognition of Chinese Clinical Named Entities with Residual Dilated Convolutions
  2. android设置文件存储大小,Android实现把文件存放在SDCard的方法
  3. python substract_Python layers.Subtract方法代码示例
  4. python培训机构靠谱吗
  5. 行测:判断推理之图形推理
  6. java 行政区划 三级_Java学习-056-Jsoup爬虫获取中国所有的三级行政区划数据
  7. 内网使用 IPV6 之Teredo篇
  8. android iccid获取不完整,Android调用getSimSerialNumber获取iccid不完整
  9. dds文件怎么在linux查看,Linux 环境编译 OpenDDS 全记录
  10. 大厂纷纷押宝“元宇宙”“鸡肋”智能眼镜难成密钥