分享

Python配置

 天选小丑 2020-08-14

之前详细说过如何在windows上部署conda环境,详细可以查看我的这篇博客。其他平台(主要是linux和macos)在我看来异曲同工,只是几个命令由conda变为了source。(如conda activate myvenv变为source activate myvenv)

什么是virtualenv(venv)

这是一个虚拟环境管理器,作为非数据科学领域的开发者来说是很实用的。它可以让你每个项目甚至每个脚本配置一个自定义的Python解释器环境,这最大的好处是我可以不污染开发环境

  • 举个例子,我有个项目是专门写爬虫的,那么我可能需要requests,bs4,lxml,pyspider,scrapy等包或者框架,此时我还有个项目我想要写点GUI界面,主要使用的包是pyqt,如果在原生的python解释器环境里面,我不得不把这个GUI包(对于我爬虫项目可能永远不会涉及使用)放到下载的包里面。
  • 这不只是看着不舒服(不考虑反复去卸载包),久而久之,你的开发环境可能会变得很庞大,因为里面堆积了很多垃圾包(你基本上不会再使用了),很多配置文件,难以寻觅,这对计算机是莫大的伤害。
  • 但是venv则可以创建任意多个虚拟环境,你只要指定当前环境那么pip安装的包就只会在这个环境下,这个环境和你的操作系统部署的python环境是隔离的。这有两个好处。
    1. 首先,我可以分门别类常见虚拟环境,互不污染。(如机器学习和爬虫不干涉)
    2. 其次,一旦我不使用了,可以直接删除虚拟环境,而不用管各种文件残留,关联问题了。

什么是pip

pip 是 Python 最常用的包管理器,该工具提供了对Python 包的查找、下载、安装、卸载的功能。它能自动处理依赖 。(linux开发者曾今对此深恶痛绝知道yum的出现)一般pip是解释器自带的,当然也可以安装。pip的出现使得类似java那样第三方包较难管理的局面消失(当然java也可以方便处理了)。主要的安装包使用方法为命令行执行pip install packagename,当然,后面提到的conda也具有包管理器功能,安装包命令为conda install packagename。

什么是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)

 

好吧,对于我这样一个一直使用conda的人问我venv怎么样本来就有失偏颇,但个人觉得conda是很好用的,尤其图形化环境(见下图)下(如windows,ubuntu)安装anaconda集成了jupyter notebook等科算数据分析人员等常用工具。当然,如果你是一个命令行(见下图)专家(当然,conda并不需要熟悉太多命令)并且觉得Anaconda自带太多用不到的包,只想使用conda的环境管理和包管理功能,那么Anaconda确实太过庞大了,推荐使用Miniconda,它是Anaconda的无界面和预装包的版本。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多