本人由于是要在MCU上部署神经网络,所以用了官方推荐的Python编译器、TensorFlow以及Keras的版本,第一次下载的是Python的IDE,也就是下面这个软件:
说实话,这个东西如果用来写代码话的太难用了,因为它不能tab键补全,输入一个函数或者命令你必须得将其全部拼写出来才能成功调用,所以它就是个坑。所以后来我还是使用了Anaconda的Jupyter来写代码,但是我在关于环境变量的问题上遇见了太多坑,所以把这记录一下防止下次出现问题:
首先我在第一次安装上图所示软件的时候是添加了环境变量的,按照官方推荐的来的,当时也不知道环境变量是什么玩意儿,然后今天在解决Jupyter上导入包的问题时依然遇见了关于环境变量的问题,所以查了一下环境变量概念:
设置Python的环境变量的作用:
当要求系统运行一个程序而没有告诉它程序所在的完整路径时,系统除了在当前目录下面寻找此程序外,还应到path中指定的路径去找。用户通过设置环境变量,来更好的运行进程。
如果安装Python不设置环境变量:
1、如果不设置环境变量在cmd命令行敲击Python会提示找不到Python命令。
2、如果不设置环境变量安装Python的第三方包的时候会提示找不到对应Python版本路径。
3、如果不设置环境变量用pip3 install安装包的时候会找不到路径。
环境变量:
环境变量(environment variables)一般是指在操作系统中用来指定操作系统运行环境的一些参数,如:临时文件夹位置和系统文件夹位置等。
环境变量是在操作系统中一个具有特定名字的对象,它包含了一个或者多个应用程序所将使用到的信息。
以上就是环境变量的相关概念,所以我只安装上述一个软件的时候就可以在cmd里运行命令行,同时我是在windows里添加了清华源的,具体方法如下:
打开资源管理器并打开C盘,然后点击图片中所指的查看。
然后勾选上隐藏选项,这样我们才能找到我们需要打开的一个文件夹。
进入“用户”文件夹
然后选择自己的用户账号文件夹进入, 这里我的账户名称是 Uyou 因此我需要打开Uyou 文件夹。
依次打开 AppData、 Roaming 文件夹。
在 Roaming 文件夹内新建一个文件夹并取名为 pip,将 pip 源切换压缩包中的 pip.ini 文件放入新建的文件夹中。 到此 pip 源切换就完成了。
这样在cmd命令行里pip3安装TensorFlow以及Keras等包的时候速度就会很快,使用清华的源。
参考文章:
===================================================================
之后我又下载了Anaconda,此时又遇到的一个问题是什么是虚拟环境:
一、虚拟环境 virtual environment
它是一个虚拟化,从电脑独立开辟出来的环境。通俗的来讲,虚拟环境就是借助虚拟机docker来把一部分内容独立出来,我们把这部分独立出来的东西称作“容器”,在这个容器中,我们可以只安装我们需要的依赖包,各个容器之间互相隔离,互不影响。譬如,本次学习需要用到Django,我们可以做一个Django的虚拟环境,里面只需要安装Django相关包就可以了,需要Scrapy库,就在开辟一个独立空间来学习Scrapy库相关就行了。
二 、为什么要用虚拟环境
在实际项目开发中,我们通常会根据自己的需求去下载各种相应的框架库,如Scrapy、Beautiful Soup等,但是可能每个项目使用的框架库并不一样,或使用框架的版本不一样,这样需要我们根据需求不断的更新或卸载相应的库。直接怼我们的Python环境操作会让我们的开发环境和项目造成很多不必要的麻烦,管理也相当混乱。如一下场景:
场景1:项目A需要某个框架1.0版本,项目B需要这个库的2.0版本。如果没有安装虚拟环境,那么当你使用这两个项目时,你就需要 来回 的卸载安装了,这样很容易就给你的项目带来莫名的错误;
场景2:公司之前的项目需要python2.7环境下运行,而你接手的项目需要在python3环境中运行,想想就应该知道,如果不使用虚拟环境,这这两个项目可能无法同时使用,使用python3则公司之前的项目可能无法运行,反正则新项目运行有麻烦。而如果虚拟环境可以分别为这两个项目配置不同的运行环境,这样两个项目就可以同时运行。
Tips:其实虚拟环境好处也确实比较多,会给我们项目的开发带来许多的好处,但是初学者,建议还是不要这么折腾,我们的首要目的是更快的掌握更多的知识,研究virtualenv会花费一些额外的经历,而且意志不强的同学很容易遭受打击,但是这个优点我们还是要记下来的方便以后要用的时候能很快的想起。
通过发现,当下载Anaconda之后,我们查看Navigator,可以发现里面有一个自带的base环境变量,这是下载之后自带的一个类似根环境一样的,为什么说Jupyter方便呢就是因为这里的base环境里已经添加了很多常用的包,不用我们再单独下载了,但是这个里面还是有些包是没有的,需要单独下载,比如TensorFlow等等。现在转到上面提到的虚拟环境变量问题,因为在不同场景下需要使用不同的版本的软件,如果只是用base环境,那么每次我们切换版本的时候会很麻烦,要在base环境下的命令行里升级或者降级使用的包版本,所以这一次我在Anaconda Navigator里添加了一个虚拟变量,用来保存我目前做的特定事情时需要的版本:
然后我们需要什么版本的包就在这个环境里安装即可,创建虚拟环境步骤如下:
1. 首先安装ipykernel
在terminal下执行命令行:conda install ipykernel
2. 在虚拟环境下创建kernel文件
在terminal下执行命令行:conda install -n 环境名称 ipykernel
比如我的虚拟环境叫python (Uyou)(后面举例都默认这个虚拟环境名),那么我的就是:conda install -n python (Uyou) ipykernel
3. 激活conda环境
在terminal下执行命令行,如果报错,命令前不加source试试:
windows版本:source activate 环境名称 我的命令是:source activate python (Uyou)
Linux版本:source activate 环境名称 我的命令是:activate python (Uyou)
4. 将环境写入Jupyter notebook的kernel中
python -m ipykernel install --user --name 环境名称 --display-name "在jupyter中显示的环境名称"
这里引号里面的名称自己可以随便起,用于在Jupyter里面做标识,这里我仍然在Jupyter里面叫python (Uyou),所以我的命令是:python -m ipykernel install --user --name python (Uyou) --display-name "python (Uyou)"
5. 打开notebook服务器
在terminal下执行命令行jupyter notebook
6. 删除kernel环境方法
输入指令:jupyter kernelspec remove 环境名称
Tips:下面就可以开始在当前环境变量的路径下使用conda命令安装自己需要的包,它会保存到当前环境变量的路径下,如果conda下载的速度很慢的话,可以切换到清华源,执行以下两条指令即可,下载过程中会出现下载报错,但是重新执行下载命令即可。
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --set show_channel_urls yes
conda常用命令:
conda list:查看安装了哪些包。
conda install package_name(包名):安装包
比如:
conda install --channel https://conda.anaconda.org/menpo opencv3:安装opencv
conda install scikit-learn:安装sklearn
conda install tensorflow-gpu:安装GPU版本的tensorflow
conda install keras==2.2.4:安装keras版本为2.2.4
conda env list 或 conda info -e:查看当前存在哪些虚拟环境
conda update conda:检查更新当前conda