我们在使用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的sys模块有什么用_python sys模块详解

    Python sys 模块详解 1. 简介 "sys"即"system","系统"之意.该模块提供了一些接口,用于访问 Python 解释器 ...

  2. python自定义异常必须继承exception 对不对_python自定义异常实例详解

    python自定义异常实例详解 本文通过两种方法对Python 自定义异常进行讲解,第一种:创建一个新的exception类来拥有自己的异常,第二种:raise 唯一的一个参数指定了要被抛出的异常 1 ...

  3. 在python中二进制位取反运算如何进行_Python位运算符详解

    Python 位运算按照数据在内存中的二进制位(Bit)进行操作,它一般用于底层开发(算法设计.驱动.图像处理.单片机等),在应用层开发(Web 开发.Linux 运维等)中并不常见.想加快学习进度, ...

  4. python哪个代码是正确的字典_Python - 字典(dict) 详解 及 代码

    字典(dict) 详解 及 代码 本文地址: http://blog.csdn.net/caroline_wendy/article/details/17291329 字典(dict)是表示映射的数据 ...

  5. python导入模块的变量_python 环境变量和import模块导入方法(详解)

    1.定义 模块:本质就是.py结尾的文件(逻辑上组织python代码)模块的本质就是实现一个功能 文件名就是模块名称 包: 一个有__init__.py的文件夹:用来存放模块文件 2.导入模块 for ...

  6. 合法的python变量名import_python 环境变量和import模块导入方法(详解)

    1.定义 模块:本质就是.py结尾的文件(逻辑上组织python代码)模块的本质就是实现一个功能 文件名就是模块名称 包: 一个有__init__.py的文件夹:用来存放模块文件 2.导入模块 imp ...

  7. 【Linux】19.Linux环境变量名LD_LIBRARY_PATH 和 ldd命令详解

    Linux环境变量名LD_LIBRARY_PATH 和 ldd命令详解 参考链接: https://www.jianshu.com/p/a62e1d327023 LD_LIBRARY_PATH中的LD ...

  8. python实现单例模式的几种方式_基于Python中单例模式的几种实现方式及优化详解...

    单例模式 单例模式(Singleton Pattern)是一种常用的软件设计模式,该模式的主要目的是确保某一个类只有一个实例存在.当你希望在整个系统中,某个类只能出现一个实例时,单例对象就能派上用场. ...

  9. Python中常见的__init__.py是什么意思?详解Python import的方式和原理

    Python中常见的__init__.py是什么意思?详解Python import的方式和原理 1 什么是模块化编程? 2 __init__.py文件的作用 3 Python如何import第三方库 ...

最新文章

  1. 三本+双非拿到小米offer,我的经验总结
  2. mysql 同步 存储过程_mysql 存储过程 实现数据同步
  3. java设计模式--工厂模式
  4. 阿里P8大佬亲自教你!Android内存泄漏总结,看看这篇文章吧!
  5. python pymysql用法_Python使用pymysql小技巧
  6. Python Pandas导出Hbase数据到dataframe
  7. MyBatis学习总结(20)——MyBatis完全使用指南
  8. ORACLE查看某个表的索引状态
  9. 自动驾驶——多目标跟踪模块的学习笔记
  10. 【笔试/面试】—— linux 拾遗(一)
  11. 苹果电脑获取Android Studio的发布版SHA1和开发版SHA1
  12. Mac otool替代readelf命令
  13. 快手视频批量下载,一个脚本就够了,手把手教你批量下载快手高清视频。
  14. react-jwchat,一个简单的web聊天组件
  15. 来自《星际迷航》的灵感启发
  16. 文件上传 webshell 各类型 一句话木马 图片马 制作 教程
  17. Core Animation学习笔记—第二节Setting up Layer Objects
  18. java.lang.Short常用方法
  19. C++游戏天堂——经典型(1)
  20. html 输入框变红色,为什么CAD的动态输入框变成红色?

热门文章

  1. Java基础之数组练习
  2. smartconfig配置模式
  3. ubuntu下搭建erlang编程环境
  4. tensorflow之数据集
  5. java 需要返回类型_在Java中,当一个方法不需要返回数据时返回类型必须是
  6. python torchvision_pip install torchvision error:安装版本为0.4.1的torch后继续安装torchvision报错...
  7. shell 截取某个字符串之后的内容
  8. 服务器上登录网页ip地址,查看服务器上登录的ip地址
  9. java list 赋值jsp,在Struts中使用JavaBean和List(多行数据)类型属性-JSP教程,Java技巧及代码...
  10. 两张图片合成一张_利用溶图技巧把多张图片合成一张奇幻风格图片教程