前言

最近准备参加CADC的比赛,需要应用深度学习。我的电脑已经配置了Anaconda,想在此基础上配置pytorch。踩了一波雷之后总算是完成了。
注意:本文默认您的电脑上已经安装了Anaconda


虚拟环境创建

在开始菜单中找到Anaconda3(64-bit)文件夹,打开Anaconda Prompt,或者也可以从Anaconda Navigator界面打开cmd.exe

jupyter配置tensorflow jupyter配置pytorch_jupyter


jupyter配置tensorflow jupyter配置pytorch_jupyter配置tensorflow_02


在进入Prompt后,默认的是你的base环境。为了方便管理,我们在此创建一个新的虚拟环境,用来使用pytorch框架。

输入conda create -n 虚拟空间名称 pythnotallow==版本号,python版本号要根据你自己电脑的python版本确定。我的创建命令是:conda create -n pytorch pythnotallow==3.7

注意:在默认条件下,新创建的虚拟环境会被默认安装在你conda目录下的envs文件目录下。
你可以通过这条命令指定你的文件夹:conda create -p PATH(完整的文件夹路径) python==版本号

输入conda info -e 可以查看你当前conda中的环境。若创建成功,prompt中显示如下:

jupyter配置tensorflow jupyter配置pytorch_jupyter配置tensorflow_03


输入conda activate 环境名可以进入新环境

jupyter配置tensorflow jupyter配置pytorch_python_04

环境管理的技巧:
conda deactivate可以退出当前虚拟环境,回到base中
conda remove -n 环境名称 name --all可以删除无需使用的环境


pytorch的安装

这个环节是比较折磨人的哈哈,做好准备哦

进入pytorch官网,根据自己的情况选择合适的版本。若您的电脑无独立显卡的话,“CUDA”处选择“None”即可。我的选择如下:

jupyter配置tensorflow jupyter配置pytorch_jupyter_05


复制从“conda”处起的命令行,在你新创建的环境中安装即可。

==注意:==由于网络原因,有的小伙伴可能会在下载pytorch1.x.x这个包失败。以下提供几种解决方法:
1.临时更改timeout时间
当错误提示为timeout时,可以输入conda config --set remote_read_timeout_secs 1000.0来延长时间。让子弹飞一会~
2.从官网链接或清华源等处下载在本地安装
此时要注意下载的pytorch和torchvision版本要一致。下载完成后运行:conda install --use-local FILEPATH安装即可。
3.修改download.py文件(比较麻烦)
此方法来源于知乎用户:木叶禅
https://zhuanlan.zhihu.com/p/212195072

同上,从别处下载好文件后放入anaconda安装根目录的pkgs文件夹内。但如果此时重新输入安装命令,conda仍然会重新下载。通过修改内置文件,即可让conda识别手动下载的文件。

  • 寻找download.py文件->在base环境下运行以下命令:python -c "from conda.gateways.connection import download; print(download.__file__)"
  • 随后根据输出的文件路径,用IDLE或记事本打开。找到函数download,并在函数最开始处添加代码:
from ...base.constants import CONDA_TEMP_EXTENSION

tmp_file_path = target_full_path + CONDA_TEMP_EXTENSION
if exists(tmp_file_path):
    print("\n[Download patch] file exists: %s", tmp_file_path)
    
    checksum_ok = True
    
    if sha256 or md5:
        builder = hashlib.new("sha256" if sha256 else "md5")
        checksum = sha256 if sha256 else md5
        
        with open(tmp_file_path, 'rb') as f:
            for chunk in iter(lambda: f.read(4096), b''):
                builder.update(chunk)
        
        actual_checksum = builder.hexdigest()
        if actual_checksum != checksum:
            print("\n[Download patch] cached file checksum mismatch: %s (%s != %s)", 
                checksum_type, actual_checksum, checksum)
        checksum_ok = actual_checksum == checksum
    
    if checksum_ok:
        from ..disk.update import backoff_rename
        backoff_rename(tmp_file_path, target_full_path, True)
        if progress_update_callback:
            progress_update_callback(1.0)
        print("\n[Download patch] using cached file instead of download", target_full_path)
        return

下图注释部分即为加入的代码

jupyter配置tensorflow jupyter配置pytorch_虚拟环境_06


然后保存文件即可

  • 将下载的包放入conda的pkgs目录后,重新执行命令安装。查看输出是否有如[Download patch] file exists:......以及[Download patch] using cached file instead of download:......这两条。如果出现了,说明解决方法生效,conda将会利用本地的安装包安装。
  • 但需要注意的是,我个人在应用时确实解决了pytorch包的安装问题。但是在随后的下载任务中,出现了Error: No Such FIle or directory的错误。将添加的函数注释后即恢复正常。
    4.采用pip安装
    查阅资料时许多朋友说用pip命令安装就可以顺利完成了。我个人没有尝试过。如果上述方法都不行的话可以试试哈。

当安装完成(done)后,命令行依次输入pythonimport torch。若无报错,则基本框架安装成功。


Jupyter Notebook上添加关联

此时若直接打开Jupyter Notebook,创建python文件并import torch,会得到以下惊喜:

ModuleNotFoundError:No modele named 'torch'
  1. 以管理员身份打开Anaconda Prompt,在base环境中输入conda install nb_conda安装nb_conda。
  2. 进入创建的环境,命令行输入conda install ipykernel安装ipykernel。
  3. 安装完成后进入Jupyter Notebook,创建文件时可以发现多了两个选项

    选择"Python [conda env:pytorch]"即可应用pytorch开始深度学习的旅程啦~

参考博文:
我是按照sjtucq这位老哥的教程来做的。但是途中遇到了一些不一样的坑。因此汇总了一下并做了总结分享。
昨天的课程上接触了pycharm,感觉利用anaconda管理包+pycharm来写代码会更舒服。基于conda时,pycharm中创建环境和包的添加可以在GUI界面完成,对入门的朋友可能会更为友好。