zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    细说 ASP.NET Cache 及其高级用法【转】
    类变量和实例变量的区别是什么?
    【转】细说Cookie
    【转】细说 Form (表单)
    PHP API中,MYSQL与MYSQLI的持久连接区别
    Extending_and_embedding_php翻译
    linux常见面试题及答案
    手机辐射查询
    php5.3 PHP5.4 PHP5.5 新特性/使用PHP5.5要注意的
    sqoop安装遇到的问题
  • 原文地址:https://www.cnblogs.com/lxy764139720/p/15068534.html
Copyright © 2011-2022 走看看