前言
本文作于总结日记,一开始用conda创建虚拟环境然后再去pycharm创建虚拟环境的时候就很迷惑这其中的区别以及作用,找了网上的资料感觉也没有太说清楚,最终我自己做了一些尝试并且得到一些自我的理解即如下。
python解释器
要明白这些的区别,首先得先知道我们平时用的python的定义,一般我们说python是一门编程语言,而我们平时用的是它的解释器,其可粗略分为这两部分 python本体、pip(包括一些库)
- 官网下载的python是一个解释器
- conda其中base环境本身包括一个解释器
- pycharm创建的venv是一个基于某个base解释器的一个新的解释器(因为你可以在这个虚拟环境里安装新的包而不影响base解释器,它的库已经改变了,不是原本的解释器)
conda创建的虚拟环境
一般而言,我们会从python官网下载一个python,这个时候我们可以用命令行控制这个python下载库,我们(或者说是我以前认为)就认为这个是全局python,其实这只是一个解释器,但是它被加入了环境变量,换句话说,如果有另外一个python解释器,即conda里的,我们把它加入了环境变量,这样某种意义上,它也成为了我们的全局python。
而conda例如anaconda,它粗略地说可以是一个python的发行版,它自带了一些库,是一个已经被人修改过的python解释器,而conda的意义还不止如此,我们首先认为我们系统那个环境为系统环境,而conda本来它是一个环境管理工具,它自带一个base环境,但独立于我们的系统环境(因为没有添加环境变量,而conda也不建议加,在安装界面可以看到)。
pycharm环境设置问题
inherit 那个是 是否继承上个base 解释器的包,不继承的话就是几乎新的解释器,只有对应版本的python
available all project是 是否将现在这个虚拟环境作为一个新的base解释器 也就是在之后的base解释器之后可以选到
但其实它是首先新建了一个以base解释器为主的project
然后再新建一个以这个project的解释器为base解释器的project 相当于嵌套调用了base解释器
好处是 它其实是用base解释器为母本,然后之后的project可以修改它如果是直接使用它的解释器(use previous interpreter)的话,或者可以用它做虚拟环境,相当于复制一个base解释器当共享环境用,这样修改就不会影响到原来的base解释器。
使用方法
就conda创造的虚拟环境而言,其实它跟pycharm的虚拟环境没有太大区别,我更多理解它为一个概念问题,就是它相当于创建一个系统环境,而pycharm我是针对不同项目而创建的独立虚拟环境,所以安装新的一些库之类的我会使用conda,然后在pycharm针对不同项目创建虚拟环境。
而pycharm的虚拟环境设置的话就是如果你是单纯一个项目,其实虚拟与否问题不大,但是你多个项目的话,可以选择一个base解释器做虚拟环境,防止不同项目冲突,这是好习惯。而如果你考虑到有一些项目是共通的但又怕出错,可以选择新建虚拟环境再对所有项目可用,这样就可以创建一个新的以base解释器的共享环境而不用担心影响原来的base。