使用的硬件软硬件环境:Windows10 + Anaconda + Pycharm

Anaconda

1)了解Python

Python可以理解成一个解释软件,可以将写的Python代码翻译给电脑执行。
如果我们电脑中有装有Python的话,打开安装目录可以看到如下结构:
                         


其中python.exe就是我们的解释器
Lib文件夹用来存python的包,包括自带的包和第三方包。如果是第三方的包则存在Lib下的site-packages文件夹中
总的来说,python中包括一个解释器和一个包集合
问题是,python自己已经可以满足自己程序的所有过程,为什么还要用到anaconda呢?

2)Anaconda的安装

在解释为什么使用anaconda之前,我们先将anaconda装好先。
Windows下的安装步骤可以参考这篇博客,这里不再赘述。
安装完之后,最好改下镜像源,就是下载库的地址。这里使用清华大学的镜像源
我们打开cmd,输入conda config --set show_channel_urls yes
然后文件管理器中进入C盘下的用户目录,找到.condarc文件,用记事本打开。
然后删除原有的,粘贴如下内容就更改结束了:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
channels:
- defaults
show_channel_urls: true
default_channels:
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
custom_channels:
conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
msys2: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
bioconda: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
menpo: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
simpleitk: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud

另外,因为我是使用Windows平台的,所以这里有关Linux系统的操作都省略。

3)Anaconda的作用

问题①:我们都有了python,为什么还要anaconda呢?
    这就要涉及环境的问题了。我们知道,python的优势就是可以引入很多的第三方的库和包。
    可是当我们编写不同的项目程序的时候,会有很多不同的库要引入。
    打个比方,我写爬虫程序,要用到requests包;我写神经网络,可能要用到PyTorch库。
    如果我电脑中没有anaconda,所有的包和库都要放在Lib文件夹中。
    在我跑爬虫程序时,不仅要将加载完全用不上的PyTorch库导致运行启动变慢,还可能在调用request包的时候发生错误。
    为了解决上述问题,Anaconda就出场了。
问题②:anaconda怎么解决
    Anaconda可以理解成包含了Python的一个大包。
    这个包中除了Python,还包括一些其他常用的库,例如numpy和pandas。
    打开anaconda安装目录可以发现,anaconda的项目结构和python的极为类似。
                         


    两个都有一个python.exe和Lib文件夹,分别是base环境下的解释器和包文件夹。
    anaconda解决上面问题的方法就是为每一个项目创建新的环境。
    每个新环境中都独自着有着自己的Lib文件夹,及有属于自己的包和库。
    这样子调用起来每个项目都有独立的环境,不会相互干扰。

4)创建Anaconda的虚拟环境

    在安装完anaconda之后,开始菜单中会有如下图的目录结构,点开框中的:
                         


    点开之后可以看到如下图的界面,然后点击左侧environment的标志:
                         


    可以看到,environment中有一个base的环境,这个就是我们刚刚看到的anaconda安装目录下的python.exe和Lib组成的基础环境。
    我们点击下面create按钮,然后输入环境名称abc并选择python版本之后,就创建好了一个新的虚拟环境。
    我们之后在路径..\Anaconda3\envs下可以看到创建的新环境文件夹
    进入文件夹后的内容如下:
                         


    可以看到,这个新建的环境就是一个完整的python环境目录。
    所以,anaconda所谓的创建虚拟环境其实就是安装了一个真实的python环境, 只不过我们可以用不同版本的解释器和不同的包环境去运行python脚本.
    此外,在anaconda navigator中,还可以在不同的环境下,下载不同的包库,这里留到后续再说。

Pycharm

1)Pycharm的安装

    pycharm是一款python IDE,简单来说就是一个打代码的平台。
    pycharm的安装很简单,在官网下载安装包后一路next即可,这里不做赘述。

2)Pycharm中使用anaconda环境

    这里是一个重点。
    在安装完pycharm后,我们点击 Create New Project 新建一个项目。
    可以看到,除了要输入项目名称和保存的地址以外,下方还要选择使用的环境。按照下图操作。


    在弹出的界面设置如下操作


    然后在文件目录中选中刚刚创建的环境的python.exe,然后点击OK,就成功创建了一个项目。
                         

第三方库的下载

1)新环境的包

    到上面那步,我们通用的开放平台就搭建好了。
    但是我们前面说到,python的优势就是有庞大的第三方库。
    如果我们在anaconda navigator中查看新环境abc包含的库时,会发现相比base环境,abc少了很多库。

|

    就连base库中最基本的numpy库和pandas库都没有。
    这里说明我们需要自己下载要用到的库。
    下面以安装numpy库为例,介绍conda的环境中安装第三方库的方法。

2)安装numpy库

    在anaconda navigator中点开abc环境,按下面图片的顺序操作
             


             


    等待安装完后,numpy库就安装成功了

问题解答

1)Pycharm创建新项目时为什么不选 New environment

    在pycharm创建新项目的时候可以看到,除了有exist environment外,还有new environment。
             


    至于为什么不用,是因为我们已经在anaconda navigator中创建好了新的环境。
    其实在创建新项目的时候,也可以选用new environment来顺便创建新的环境。
    但由于还要自己设置路径不太方便,所以我个人习惯先在anaconda navigator中创建好环境并安装好需要的库。

2)为什么用conda environment不用virtual environment

    conda environment和virtual environment的目的其实都是为了划分出独立的运行环境。
    但是两个创建环境的逻辑不太一样。
    我个人理解virtual environment创建的虚拟环境是可以继承base环境中的库,即虚拟环境中对于base中已有的库并不会再次下载到自己的环境中。
    而conda environment在创建时,只有最基本的几个包且不继承base中的任何库。若想用到base中的库,则要在虚拟环境中再次下载安装多一个副本。例如上文中的numpy库,base中自带了numpy,但新环境abc中需要自己安装。

3)为什么用conda进行安装不用pip

    如果在网上搜索python搜索安装库的方法,大致有两种:conda安装和pip安装
    首先说下pip是什么:pip 是一个 Python 包管理工具,提供了对 Python 包的查找、下载、安装、卸载的功能。
    conda是什么:conda 是一个开源的软件包管理系统和环境管理系统,用于安装多个版本的软件包及其依赖关系。
    简单来说,pip就是个下载python包的工具,而conda则是个管python环境的工具。
    既然两个都能下载包,为什么选择conda呢?
    这个问题我想了很久,后来发现conda安装后,可以在anaconda navigator的列表中当前环境中的包有哪些。而用pip安装的包不能显示在anaconda navigator的列表中。所以为了方便,我个人选择了conda来安装需要的包。