Windows配置深度学习环境详细教程(二):conda工具的使用

序言

对于想要入门Python或者深度学习的初学者而言,配置环境一直是一个令人头疼的问题。相信有许多人经历过安装第三方包失败,安装好了却在使用中报错,安装CUDA、tensorflow、pytorch版本不匹配等等令人头大的问题,我也曾被这些问题所困扰。经过这两三年时间中反复重装环境的痛苦过程,直到现在我才逐渐能够独立、流畅地配制出一个令人满意的环境。在这个过程中,我也帮助了许多遇到这些问题的朋友,收获了一些经验教训,因此我希望将这一完整的过程写成博客,帮助在这方面遇到困难的人。

在这个系列的博客中,我计划详细介绍如下环境在Windows下的配置,后续有时间还会更新Ubuntu下的配置方法。

  • 安装Pycharm和Miniconda
  • 介绍conda虚拟环境配置工具(本篇)
  • 安装CUDA、tensorflow和pytorch
  • 多版本CUDA、tensorflow和pytorch共存

conda环境介绍

在Pycharm中打开Terminal,可以注意到命令行路径的前面有一个(pythonProject),这个括号里的内容,就是当前conda虚拟环境的名称。

1

使用conda env list命令,可以查看当前Miniconda中的所有conda环境,每个conda虚拟环境之间是相互隔离互不影响的。base环境是Miniconda自带的基本虚拟环境,中间有 * 星号标志的是当前所在的环境。

2

让我们打开Miniconda的安装目录(base环境后面的目录,我这里是D:miniconda3)看下其中的目录结构。

在D:miniconda3的根目录下,有几个重要的文件(夹),分别是envs/、Lib/、Scripts/、python.exe。

  • 根目录下的python.exe其实就是base环境中运行的python,这个python的版本就是你下载Miniconda的python的版本。
  • base环境中安装的第三方包都放在Lib/site-packages/目录下。
  • Scripts/目录中包含了一些常用的脚本命令文件,包括conda、pip等,我们平常在终端输入命令就是调用的这里的脚本。
  • envs/中包含了所有由用户创建的虚拟环境。打开envs/目录,可以看到当前的目录中有一个pythonProject文件夹,这就是我们刚才创建项目的同时新创建的虚拟环境。打开这个文件夹,我们会发现其中的目录结构与根目录基本一致,其中文件夹的作用也和base环境相同,但是这里python的版本则与我们创建环境时所指定的版本相同。

现在我们再来看上一篇中创建项目时的这张图片,就不难理解其中Location、Python version和Conda executable的含义了。

3

此时我们就可以来了解Make available to all projects选项的作用了,它的含义其实就是当我们在虚拟环境中安装第三方包的时候,同时也在base环境中安装一份。即在D:miniconda3envspythonProjectLibsite-packages中下载第三方包时,复制一份到D:miniconda3Libsite-packages中。

使用conda命令

因为初学者经常会一些概念不清,在不同环境下了安装第三方包却无法正常调用,所以强烈建议不要直接使用base环境。同时为了更好地学习conda命令,我们重新从零开始创建一个conda虚拟环境。打开cmd命令行或者Pycharm中的Terminal终端输入命令,这里我使用cmd进行操作。

conda换源

4

  • 首先复制conda config --set show_channel_urls yes这行命令到cmd并执行。

  • 然后用记事本打开用户目录下的.condarc文件(打开C盘->用户->你的用户名->.condarc文件,注意condarc前的点)。

5

  • 将红框中的文字复制到.condarc文件中并保存。

6

  • 在cmd中执行conda clean -i命令。

7

使用conda创建环境与安装第三方包

首先使用conda create -n NAME [python=3.8] [-y]命令创建一个新的环境,中括号表示可选项,将NAME替换为新环境的名称。

如果输入python=3.8则可以创建一个python版本为3.8的环境,否则默认创建一个与base环境相同python版本的环境。这里强烈建议加上python=3.8这个参数,原因在下一小节中会提到。

如果输入-y参数可以跳过后面确认安装的步骤。这里的python=3.8还可以替换成其他的第三方包,或者同时输入多个包并以空格形式隔开,conda会自动解析其依赖并直接安装好。

conda create -n NAME

conda create -n NAME -y

conda create -n NAME python

conda create -n NAME numpy

conda create -n NAME python=3.9 numpy

conda create -n NAME python=3.9 numpy=1.20

这里我输入conda create -n test python=3.8 numpy命令,然后输入y确定,就会创建一个名为test的,python版本为3.8的,包含numpy的conda虚拟环境。

8

创建好之后,可以使用conda activate test激活该环境(使用Pycharm的Terminal时需要新另开一个Terminal终端)。

9

使用conda list可以查看该虚拟环境中安装的所有第三方包,可以发现numpy已经安装好,并且python的版本为3.8.10(写博客时python3.8中最新的版本)。

在conda环境中正确使用pip

太长不看版:请务必使用conda create -n NAME python来创建虚拟环境,确保在创建环境时就安装了python和pip,这样在conda虚拟环境中安装第三方包时可以直接使用pip的所有命令。

详细说明版

如果conda环境中安装了python,那么直接使用pip即可将第三方包安装在当前的虚拟环境中,因为安装python时默认会同时安装pip包到该虚拟环境中。因此强烈建议在创建conda环境的同时加上python包参数

如果创建conda时只使用conda create -n NAME创建了一个空环境,那么直接使用pip命令会将第三方包安装到base环境中。此时需要先使用conda install python命令安装python才能正常地在虚拟环境中使用pip。

例如,我使用conda create -n test python=3.8 numpy命令创建了test虚拟环境,使用conda create -n test1命令创建了test1虚拟环境。通过使用where pip命令和where python命令进行直观地对比,可以看出默认的pip和python命令是哪个。同时输出多个路径时(test环境中的where pip和where python),会默认使用第一个位置。

10

11

有些同学在安装Miniconda或Anaconda之前安装过独立的Python,或者是Windows自带的Python。这个Python是直接安装在了用户目录下的(C:UsersusernameAppDataLocalMicrosoftWindowsAppspython.exe),如果担心当前使用的是这个自带的python环境,也可以使用where python和where pip命令进行查看。

值得一提的是很多教程中会使用--user作为pip命令的参数,该命令的作用是在用户目录(C:UsersusernameAppDataRoamingPythonPython38site-packages)中安装python第三方包。安装在这个目录中的包能够在base环境中正常使用,但是不能在其他conda环境中使用。并且考虑到应该使同一环境中的包安装在同一个位置,所以不推荐使用该命令。

例如,在test1环境(未安装python和pip包)中依次使用pip install numpy --user命令和pip install matplotlib命令,效果如下。可以发现在base环境中,有matplotlib包,但没有numpy包,matplotlib包安装在D:miniconda3Libsite-packages中,而numpy安装在C:UsersusernameAppDataRoamingPythonPython38site-packages中。

12

13

在Pycharm中改变项目环境为base环境,并导入这两个包时均无报错,但查看包文件的位置时,却是安装在上述两个不同的目录下的。

14

15

pip换源

清华大学 https://pypi.tuna.tsinghua.edu.cn/simple/

阿里云 http://mirrors.aliyun.com/pypi/simple/

中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/

中国科学技术大学 http://pypi.mirrors.ustc.edu.cn/simple/

其他conda命令

操作 命令
查看环境中已经安装的包 conda list
查看所有conda环境 conda env list 或 conda info -e
创建指定python版本的conda环境 conda create -n ENV_NAME python=3.8
创建包含某些包的环境 conda create -n ENV_NAME PACKAGE_NAME
安装包 conda install PACKAGE_NAME
更新包 conda update requests
更新所有包 conda update --all
更新conda版本 conda update conda
查看conda版本 conda -V
进入指定环境 conda activate ENV_NAME
退出当前环境 conda deactivate
删除某环境 conda remove ENV_NAME --all

如何切换Pycharm项目使用的conda环境

在上面的步骤中,我们使用命令行创建了test虚拟环境,但此时Pycharm的项目中使用的还是原来的环境,需要我们手动切换。

  • 打开File->Settings->Project->Python Interpreter(或者点击右下角的Python 3.8 (pythonProject)->Interpreter Settings),点击Python Interpreter右侧的箭头,选择Show All。

16

17

  • 点击 + 加号。

18

  • 对于已创建的conda环境,选择Conda Environment->Existing environment。

19

  • 点击Interpreter右侧的三个点,选择虚拟环境中的Python解释器,即找到miniconda3/envs目录下->希望选择的虚拟环境目录中的python.exe,点击OK。

20

21

  • 依次点击OK,保存设置,等待右下角状态栏中的Updating skeletons进度条完成。看到右下角显示Python 3.8 (test)说明切换完成,此时项目使用的就是test环境了。

22

原文地址:https://www.cnblogs.com/lxy764139720/p/15068534.html