开发环境的构建
开发环境的构建
homepage
#开发环境的构建 所谓“工欲善其事,必先利其器”。我们必须构建好了开发环境,才能进行代码的开发与运行。开发环境的构建主要分为两大方法, 其一是借助Anaconda等工具进行虚拟环境的构建。其二是直接在系统中进行环境的构建。在虚拟环境中构建开发环境非常便捷,并且 由于环境相互独立,可以实现很多特殊需求。因此我们推荐在虚拟环境中进行开发与运行。然而,有些项目下,会要求程序必须在 系统环境下运行甚至开发。针对这种情况,我们也会介绍在系统下直接配置开发环境的方法。 ##虚拟环境的构建 这一部分中,我们从实装Anaconda开始,介绍虚拟环境的创建与管理。 ###虚拟环境的简介 构建虚拟环境,可以看作是构建了一个或数个相互独立的开发与运行环境。在不同环境中,你可以使用不同的模块,同一模块的不同 版本,甚至不同版本的Python而没有相互冲突,这是直接在系统环境中安装Python与模块所做不到的。我们可以通过以下几个案例 来了解到虚拟环境的优势。 >案例一:某委托外包项目中,承接会社A的一个既有项目,在其上进行新功能开发。会社A以前在这个项目上遗留的是基于Python 2.5 >开发的上古代码,尽管已经年久失修,但核心部分仍可以正常运行。并且当时进行开发的程序员Bさん已经跳槽跑路,不会再提供对其代码的技术 >支持。而新功能由于所需的一部分模块只提供Python3的版本,则需要在Python 3.6上进行开发。由于工程日期紧迫,没有条件对 >Python 2.5的代码进行移植,只能兼容运行新旧两部分代码。在这种条件下,使用两个独立的进行开发与运行,完美满足了项目需求。 >案例二:某项目组要同时使用Pytorch和TensorFlow进行开发,而最新版的Pytorch与TensorFlow所支持的的CUDA Toolkit版本不同。 >一台电脑上不可能同时安装两个不同版本的CUDA Toolkit,版本问题无法协调。于是在系统上配置好显卡的驱动之后,分别在两个虚拟 >环境中,配置不同版本的CUDA Toolkit与对应的CuDNN模块,完美解决了CUDA Toolkit版本冲突的问题。 >案例三:实验室新米成员后辈小K,缺乏编程经验,初次学习编程,使用Python。在自己的电脑上一顿操作猛如虎,系统环境被配置 >的一团糟,已经无法正常运行基本程序,只好求助前辈重置系统,并对实装环境产生心理阴影。转而使用虚拟环境之后,仿佛打开了新世界的大门。 >一天删除环境八次,在不断的尝试与错误之后,掌握了环境的构建与管理的方法。 总结一下,虚拟环境可以独立地配置不同版本的Python与相应模块,可以满足多种开发需求。并且由于虚拟环境独立于系统,可以方便地 新建或者删除而没有后顾之忧,在实际的开发中,非常实用。 ## Anaconda的实装 有很多种可以配置虚拟环境的方法,这里我们推荐使用Anaconda。Anaconda是目前非常流行的一种解决方案。不止提供了虚拟环境的功能。 还提供了很多支持的第三方的软件与一部分模块的安装,使用起来非常方便。 首先我们访问Anaconda的官方网站,在上面可以获取最新版本的Anaconda的下载,可以点击下面的链接进行访问。 [Anaconda](https://www.anaconda.com/) 注意在下载的时候要下载我们所需要的版本的Anaconda。  在上侧,我们要选择自己要适配的OS的类型,是Windows,MacOS还是Linux。下侧,我们要选择使用的Python的版本,我们课程中基本上都使用 Python 3,因此我们选择左边的3.7版的Anaconda。在实际使用中,我们还可以更改Python的版本。另外注意使用64-Bit系统的情况 下,选择64-Bit的版本进行下载。 下载完成之后我们就进行安装,要注意记住Anaconda的安装路径,之后在一些场合可能会用得到。其他的选项基本保持默认进行安装就可以。 ##虚拟环境的创建/管理 初装Anaconda之后,Anaconda已经为我们实装了一个基础的虚拟环境,环境名为“base”。我们接下来,将学习虚拟环境的创建,管理,撤销等。 ###Anaconda GUI的场合 Anaconda自带GUI,可以使我们非常方便地对环境进行各种变更或者管理。 打开Anaconda Navigator。使用Windows的场合,我们可以打开搜索栏,搜索“Anaconda Navigator”。而在Linux中,我们可以打开终端,键入 anaconda-navigator, 敲击回车,启动Anaconda Navigator。 在左侧的选项卡中,我们选择Environments,以对虚拟环境进行管理。  注意,这时候列出了已经创建了的虚拟环境,我们可以通过点击不同的环境名标签进行切换。 点击左下角的Create图标,我们来创建一个新的环境,这时候弹出一个对话框,如下。我们可以在对话框中对新环境进行命名, 并选择Python的版本。  我们来创建一个名为“test”的Python 3.6的环境。在Name后填入环境名“test”,并在Python前面的checkbox中打勾,在下拉菜单中, 选择3.6。(如图)  点击Create,创建环境。  这时候我们可以在左侧的环境列表中看到刚刚创建的新环境“test”。如果这时候没有在这个环境下,注意点击这个环境以激活它。 接下来我们来学习安装ipython模块。ipython模块使我们可以在Python console中方便地进行路径操作,如同在Linux Terminal中。 在将来我们可能会用到这个模块。  在左上角的下拉选项中选择“All”, 并在右侧搜索栏中键入“ipython”。在ipython前面打勾之后,在界面右下角点击Apply。 这时候弹出一个对话框,Anaconda不止要安装ipython这一模块,还要一并安装所有环境中缺失的,ipython的运行需要依赖的模块。 (如图)  我们继续选择Apply。等待数秒,ipython和它运行所依赖的模块,就下载安装完成了。 当我们需要卸载模块的时候,类似的,我们先在环境中搜索这个模块。点击checkbox前面的对勾,可以卸载这个模块,或者指定安装这一模块的其他版本。  卸载时,Anaconda也会检查环境中这一模块依赖运行的其他模块,如果没有别的模块依赖运行这些模块的话,Anaconda会将它一并卸载。(如图)  如果我们需要创建一个和“test”非常相似的环境,那么我们可以克隆这一环境,并在之上进行更改。激活需要被克隆的环境之后, 点击左下角的Clone,在弹出的对话框中,对新环境命名之后,克隆这一环境到新环境中。(如图)  如果一个环境不再需要继续使用,希望移除这个环境,则可以在激活这一环境之后,在左下角用Remove图标来移除它。在移除环境之前, 一定要反复确认,移除的确实是自己需要移除的环境,千万不要在激活了其他环境的情况下错误地进行移除环境的操作。 以上就是关于Anaconda GUI (Navigator)进行环境配置的一个简单介绍。 ### Anaconda CLI的场合 Anaconda自带CLI功能。在一些特殊的场合,例如我们使用Shell远程连接客户的机器时,可能无法访问GUI,这时候我们可以使用CLI来进行虚拟环境的操作。 同时,由于CLI操作更加简洁,功能更多,我们在很多时候也会更优先使用CLI进行操作。 在Windows下,我们可以使用搜索功能,搜索anaconda,在结果中,选择Anaconda Prompt。这是添加了Anaconda管理功能的windows cmd终端。 也就是说,除了Anaconda的环境管理外,这个终端还具有完整的cmd功能。 而在Linux下,正常安装Anaconda之后,我们只要直接打开终端,键入相应的命令就可以。 打开终端(Windows的Anaconda Prompt或Linux的终端), 我们首先键入以下命令并回车。 ``` conda env list ``` 这个命令可以列出现在Anaconda中所有的环境,及它们所在的物理路径,可以得到类似如图的结果,其中名后带有星号的环境就是目前激活的环境。 这一点也可以在命令行前的括号中看出来。  展示的环境中,存在两个环境,除了默认的“base”环境外,还有一个我们已经创建了的“Normal”环境。在Windows下,我们可以键入以下命令来切换激活这一环境。 ``` activate [env name] ``` 请注意,上面这条命令适用于Windows,对于linux,我们需要在终端中键入以下命令: ``` souce activate [env list] ``` 我们可以看到,环境列表中的星号已经转到了“Normal”环境前,提示符前面的括号里也已经从“base”变成了“Normal”(如图)。  如果我们想要关闭现在激活的环境,回到默认的“base”环境,可以键入以下命令: ``` conda deactivate ``` 现在我们来创建一个新的环境,假设我们要创建一个名叫“test”的虚拟环境,Python的版本为3.6.8,参考以下的命令: ``` conda create -n [env name] python=[Python version] ``` 之后会提示你,将下载安装相应的内容,键入y并回车确认。(如图)  等待数秒的下载与安装后,一个新的虚拟环境就创建完成了。使用命令查看虚拟环境列表,可以发现,这个环境已经被添加进了列表中。 接下来我们来为这个环境安装ipython。首先使用命令激活环境“test”,然后然后参考下面的命令,来安装ipython。 ``` conda install [package name] ``` 类似的,我们需要确认在这个环境中下载安装相应的内容。等待数秒之后,安装已经完成了。 而如果我们想在环境中卸载特定内容,则可以参考下面的命令: ``` conda remove [package name] ``` 经过确认之后,相应的包就会被从环境中移除。 与GUI相同,我们在CLI中也可以克隆环境。参考以下命令: ``` conda create -n [env name] --clone [name of env to be cloned] ``` 同样的,我们也可以使用CLI移除环境,参考以下命令: ``` conda env remove -n [env name] ``` 如果要查看目前环境中所有已经安装的包,则可以使用以下命令: ``` conda list ``` 打印出的信息,会列出已经在环境中安装了的包的名称和版本等信息。 除去这些在GUI中也可以做得到的工作之外,我们还能在CLI中做一些GUI中不方便做的工作。 我们在GUI中,等于安装的包都是Anaconda提供安装的,然而Anaconda的模块库并不全,在一部分开发的工作中,我们会用到一些Anaconda没有提供的包。 这种场合下,我们可以考虑从PyPI中进行安装。PyPI中有比Anaconda官方提供的更加丰富的包的种类。参考以下命令进行包的安装: ``` pip install [package name] ``` 需要特别注意的是,有很多包在Anaconda库和pip库中是共存的,**千万不要使用conda和pip将相同的包安装两遍**。在安装一个新的包之前, 如果不确定,一定要查看以下是否已经安装了相应的包,并且通过PyPI安装的包会在channel一栏中注明(如下图)。  而在PyPI中安装的包也可以通过以下命令来卸载: ``` pip uninstall [package name] ``` 需要注意的是,pip下卸载的命令和conda中不同,不是使用“remove”,**而是“uninstall”**。 另外,在PyPI中安装的包,在进行环境克隆时,**并不会被复制到新环境**, 只有使用conda安装的包才会被复制,在实际应用中,请千万注意这一点。 此外, 使用PyPI,可以直接导出所有已经安装的包和版本信息,使用如下命令可以指定目录的路径: ``` pip freeze > [content file path] ``` 导出的是一个一般的文本文件,并且是可编辑的(如图)。  同样的,可以利用这一目录文件,安装目录上所有的包,使用如下命令: ``` pip install -r [content file path] ``` 这里要注意在安装前,检查目录中的内容。 ###Spyder3与VS Code Spyder3和VScode是两款非常受开发者欢迎的IDE。在Anaconda中,这两款IDE也得到了集成。 如果我们使用GUI打开Anaconda,可以发现,在默认环境base下,Spyder3已经默认安装了,而VScode也可以一键进行安装。(如图)  注意这个界面在“Home”选项卡中,并且可以切换使用的虚拟环境。点击Spyder下面的“Launch”就可以启动这个环境下的Spyder3, 并且可以通过点击VS Code下的“Install”来安装VS Code,并在这一环境中使用它。 使用CLI的场合,也可以使用以下命令来安装Spyder3: ``` conda install spyder ``` 并且,在CLI中直接键入Spyder并回车,就可以启动Spyder3。 ###Pycharm Pycharm是一款非常受Python开发者欢迎的IDE,Pycharm自带有虚拟环境的功能,并且也可以使用Anaconda的虚拟环境。 在Pycharm中创建新的项目,会弹出一个对话框(如图)  在这个对话框中,我们可以进行新项目的创建,其中,路径之下的选项卡,展开之后,就可以配置解释器。(如图)  其中,我们有三种方法来创建一个新的环境,我们介绍其中两种。第一种是使用Pycharm自带的(或者说是Python自带的)虚拟环境功能。 选项选为“Virturalenv”,我们可以编辑这个环境所在的位置。这种方法是创建一个新的虚拟环境,注意,这个环境是Anaconda不能管理的。 我们可以通过在Pycharm的Terminal中,使用PyPI来管理这个环境中的包。 而另外一种方式则是创建一个新的Anaconda的环境(如图)。  这种方法将会创建一个新的Anaconda的虚拟环境,可以编辑环境路径,并选择Python的版本。这个环境将是可以在Anaconda中进行管理的。 另外,Pycharm还可以使用一个已经存在的虚拟环境,选择下部的“Existing interpreter”,定位相应的Anaconda的环境中的解释器的位置, 就可以使用现存的Anaconda环境了。 ##系统开发环境的构建 某些特定情况下,尤其是涉及到了部分系统的运行的资源与权限的问题时,可能会要求我们所开发的程序必须运行在系统环境下。 针对这种需求,我们就来学习如何构建系统开发环境。需要注意的是,系统开发环境的配置与管理失误,可能会使开发或者运行工作陷于非常困难的境地, 在这一过程中,一定要谨慎。 ###系统开发环境的构建-Windows的场合 首先,我们需要下载Python。我们可以访问Python的官网来下载Python,链接在下。 [Python官网](https://www.python.org/) 请注意选择正确的版本进行下载,下载共Windows使用的,对应版本的Python。之后我们就可以双击进行安装。安装界面如下。  在安装时,我们在“Add Python to PATH”前面的checkbox打勾的话,可以在安装的同时,为其添加系统变量。 如果在安装时忘记了这个选项,我们也可以手动进行添加。 在桌面的“This PC”图标上点击右键,选择弹出菜单的“Properties”。可以看到弹出的系统信息对话框(如图)。  点击其中右边的“Advanced system settings”,弹出系统属性对话框(如图)。  选择右下角的“Environment Variables”,来添加系统变量。 在弹出的对话框中,我们注意选择下方“system variable”中的“Path”,对其进行新建系统变量。(如图)  将Python的路径添加进系统变量列表。需要注意的是,我们还需要使用pip(PyPI)来对环境进行管理,所以需要把Python路径下的“Scripts” 目录也添加进系统变量。之后,可以打开cmd,尝试键入python并回车,此时,应该能正常地进入Python的交互界面。 ###系统开发环境的构建-Linux的场合 Linux有多种多样的发行版,其中比较常见的被商业使用的有Ubuntu,CentOS,RedHat,Linux Mint等等。我们这里以Ubuntu 18.04 LTS (目前最新的LTS版本的Ubuntu)为例。 由于Ubuntu可以使用Advanced Package Tool (apt),我们可以非常方便地管理系统内的主流软件。相似的,CentOS也可以使用yum等工具。 在Ubuntu 18.04 LTS中,已经默认安装了Python3,只要你打开终端,在其中键入“python3”并回车,就可以进入Python的交互界面。 然而,在相对更早的版本的Ubuntu中,默认安装的是Python2,例如在各种平台上目前应用非常广泛的Ubuntu 16.04 LTS。这时候就需要你手动添加Python3了。 在终端中键入以下命令: ``` apt-get install python3 ``` 需要注意的是,添加应用一般需要超级用户权限,前面可能需要添加“sudo”。 此外,我们还需要pip(PyPI)来对环境中的包进行管理,使用如下命令,安装pip到系统中: ``` apt-get install python3-pip ``` 需要特别注意的一点是,在很多Linux的发行版中,“Python”默认代指Python2,例如上面的例子中,如果安装时忘记指定安装Python3,而是直接安装“Python”, 那么安装在系统中的将是Python2和适合Python2使用的PyPI。
content
戻る