作者:吴永强,东北大学,Datawhale团队成员
搞算法的同学也都明白,一个比较完美的python环境是多么的重要。这篇文章打算把一些必备的python环境配置过程记录下来,这样不管是新到了公司实习或者就职,还是新换了电脑,都可以借鉴这篇快速把环境搭建起来啦
由于我也是重装了系统,所以算是从0开始搭建python环境,这次从anaconda安装开始, 然后到cuda的相关安装配置,再到cudnn的安装配置,然后从anaconda中建立虚拟tensorflow和pytorch的虚拟环境,再各自的虚拟环境里面安装jupyter notebook并完成配置,安装tensorflow的GPU版本和pytorch的GPU版本。这一整套下来,在自己机子上做一些简单的模型实验就没有问题了。
虽然这套流程是目前是在Windows上做的,但具有普适性,在Linux上也是一样的道理,只不过有些地方的操作可能不一样,原理都是一样的。
内容包括:
Anaconda的安装与常用命令小总
Jupyter的安装与相关配置
CUDA与Cudnn的安装(GPU支持必备)
建立tf虚拟环境并安装tf2.0GPU版本
建立pytorch虚拟环境并安装pytorchGPU版本
Ok, let’s go!
Anaconda是为方便使用Python而建立的软件包,其包含250多个工具包,多版本的Python解释器和强大的虚拟环境工具,所以Anaconda是Python的全家桶。Anaconda可以使安装,运行和升级环境变得更简单,所以初步学习Python,这一个就足够了。
Windows下的Anaconda安装,是所谓的傻瓜式安装,Linux下面的安装,可以参考我之前整理的(https://zhongqiang.blog.csdn.net/article/details/112376293)。
Anaconda官网下载安装包
下载之后,点击Anaconda3-2019.07-windwos-x86_64.exe这个安装文件进行安装,选择路径,勾选加入环境变量,等待安装完成即可(这些和普通软件安装一样,一路回车操作),
这里面一定注意,不要把anaconda装到C盘。因为你后面会有好多个虚拟环境,安装很多包;另外,建议把conda命令加入到环境变量里面去。
验证安装成功:打开命令行,输入conda,回车。看是否能进入conda环境。
这个安装比较简单,不过多整理,下面是常用的命令,这些记好了之后,就能比较轻松的用anaconda管理虚拟环境,管理相关包了。打开命令行,输入activate
, 此时会进入一个root的默认虚拟环境, 如下:
这个是一个默认的虚拟环境,如果不想建其他环境,比较省事的方法就是把所有用到的包全安装到这里面,打造一个万能环境,所以下面先整理关于包管理的命令
# 列出当前环境下安装的包, 非常常用
conda list
# 实验过程中,如果发现某些包没有,直接安装
conda install package_name # 也可以带版本号
pip install package_name
# 如果发现装错版本了,想要卸载掉包
conda remove package_name
pip uninstall package_name
# 更新包
conda update package_name
在一个虚拟环境里面,掌握这几个常用的命令即可,上面是比较省事的方法,只有一个环境,但我不太习惯这样做,我一般喜欢建立多个虚拟环境,在每个虚拟环境下安装特定的包去完成相应的实验,因为有的项目可能需要python2,有的需要python3,有的可能是tf项目,有的可能是pytorch项目。这时候,用到的包会很不一致,所以,分类管理也是一个不错的思路。那么下面就是管理环境常用的命令:
# 查看已经有的虚拟环境 常用
conda env list
# 新建虚拟环境 可以指定python版本和一些包的版本
conda create -n env_names package_names # conda create -n tfenv python=3.7
# 进入虚拟环境,这时候面临着对一些包的操作,就是上面包的相关命令了
activate tfenv
# 离开虚拟环境
deactivate
# 删除虚拟环境
conda env remove -n env_name
这里单独拎出一个东西来,叫做共享环境,这个其实是非常有用的,它能让其他人安装项目中使用的所有包,并确保这些包的版本正确。比如开发了一个系统,让别人来部署,但其他人可能不知道用的哪个python版本,哪些包等,盲目安装又可能由于版本原因出现问题,所以共享环境就比发挥威力了。怎么用?
# 将当前环境下安装的包保存为YAML文件
conda env export > environment.yaml
此时在当前目录下就会发现一个导出的环境文件:
在GitHub上共享代码时,我们往往会看到这样的操作,一般人家都会给出创建环境的文件,这时候,我们git clone下项目之后,依赖这个文件就能轻松安装依赖项。那么导出的环境文件如何使用呢?
activate tfenv
# 安装所有包
conda env update -f=/path/to/environment.yaml
如果不用conda,而是用pip的时候,可以导出一个txt文件,然后安装:
pip freeze > requirements.txt # 导出文件
# 然后将该文件包含在项目的代码库中,其他项目成员即使在他的电脑上没有安装conda也可以使用该文件来安装和我一样的开发环境
pip install -r /path/requirements.txt
关于anaconda,就整理这么多,应该是够用啦,后续如果有新大陆,还会再补充。
关于jupyter, 在安装了anaconda, 默认的root环境下会有jupyter notebook的,但是新创建了虚拟环境之后,我们还需要重新安装jupyter notebook。命令很简单:
pip install jupyter notebook
安装jupyter很简单,这里想整理一个事情,就是修改默认的工作空间,在Windows上使用jupyter notebook不像Linux,Linux是在哪个目录下启动,就会默认哪个目录为工作空间,但是Windows中不是这样,那么怎么修改默认工作空间呢?
这个一般是修改jupyter的配置文件,如果没有,就打开命令行,通过下面命令生成:
jupyter notebook --generate-config
此时会在C盘user下面的.jupyter目录下面产生一个jupyter_notebook_config.py的文件:
用Notepad++打开jupyter_notebook_config.py
,找到c.Notebook,建立你的新工作路径,取消注释,c前面的#要去掉。
点击保存,这下就修该好了路径,cmd,输入jupyter notebook
,你就发现你的路径已更改
这样一般是能够修改路径的,如果还没有,搜一下添加下环境变量,再修改下快捷方式。
修改配置文件,不仅可以修改默认工作空间,还能修改默认启动浏览器,想到想用的浏览器路径,然后打开jupyter_notebook_config.py
找到App.browser = ''
,在这行下面添加以下三行代码:
import webbrowser
webbrowser.register("chrome",None,webbrowser.GenericBrowser(u"C:\ProgramFiles (x86)\Google\Chrome\Application\chrome.exe"))
c.NotebookApp.browser = 'chrome'
此时就修改了jupyter使用的默认浏览器。
在这里插入图片描述关于jupyter的配置就整理这么多,但是原生的jupyter可能不是很好用,此时可以安装一些扩展功能:
conda install -c conda-forge jupyter_contrib_nbextensions
此时,打开jupyter就会有一些扩展功能:
另外,这里也记录一个我比较喜欢的jupyter一个主题:
pip install jupyterthemes
# 一个不错的主题
jt -t monokai -f fira -fs 13 -cellw 90% -ofs 11 -dfs 11 -T -N
下面整理些jupyter单元格操作的快捷键:
执行当前cell,并自动跳到下一个cell:Shift Enter
执行当前cell,执行后不自动调转到下一个cell:Ctrl-Enter
是当前的cell进入编辑模式:Enter
退出当前cell的编辑模式:Esc
删除当前的cell:双D
进入下一个cell:双A (前面)或 Alt+Enter(后面)
为当前的cell加入line number:单L
将当前的cell转化为具有一级标题的maskdown:单1
将当前的cell转化为具有二级标题的maskdown:单2
将当前的cell转化为具有三级标题的maskdown:单3
为一行或者多行添加/取消注释:Crtl /
撤销对某个cell的删除:z
浏览器的各个Tab之间切换:Crtl PgUp和Crtl PgDn
快速跳转到首个cell:Crtl Home
快速跳转到最后一个cell:Crtl End
ctrl + ? #注释
shift + tab # 查询函数的注解
# jupyter 将本地.py文件导入
%load test.py #test.py是当前路径下的一个python文件
# 运行python文件
%run file.py
!python myfile.py
CUDA是一个并行运算的一个计算平台,而CuDNN是在上面的一个深度神经网络的GPU加速库。如果想用TensorFlow或者pytorch的GPU版本,这两个是必须要安装的。但前提,机子内得有显卡,且是NVIDIA的。
下载CUDA,这个是cuda-10.0的版本,如果安装别的版本,也可以在这里找。
链接:https://developer.nvidia.com/cuda-10.0-download-archive?target_os=Windows&target_arch=x86_64&target_version=10&target_type=exelocal
下载完成后,打开下载的驱动, 开始安装。这里选择自定义安装:
自定义安装这里可以进行一些设置,否则有可能会导致安装失败,首先组件这里取勾GeForce Experience,
然后, 我这里安装的时候,必须Visual Studio Integration也需要取消勾选。
点开Driver comonents,Display Driver这一行,前面显示的是Cuda本身包含的驱动版本是411.31
如果你电脑目前安装的驱动版本号新于Cuda本身自带的驱动版本号,那一定要把这个勾去掉。否则会安装失败(相同的话,就不用去取勾了)
结束之后, 怎么看是否成功了呢?打开下面这个路径,查看nvcc.exe,有这个说明CuDA安装成功。
同样的,来官网: https://developer.nvidia.com/rdp/cudnn-download, 选择Cudnn for CUDA10.0, 这个需要登录, 注册个邮箱或者用微信登录即可。
下载下来之后,解压cuDNN:
我的电脑——>属性——>高级系统设置——>环境变量
在系统环境变量中找到path
当安装完Cuda的时候,会自动的cuda的bin目录以及libnvvp目录加入到环境变量中,但是并没有加CUPA和Cudnn的路径,我们需要把这俩加入进来,这样,在使用TensorFlow的时候,才不会报错。
Cudnn和Cupta的路径缺一不可,第三个不用管,安装anaconda的时候,会自动加入。
测试cuda, 打开命令行, 输入nvcc \-V
这里主要是tf2.0GPU版本的安装, 有了上面的铺垫,这里会变得非常简单。
首先,先建立一个tfenv的虚拟环境:
conda create -n tfenv python=3.7
此时,我这里竟然报了一个错误:
CondaHTTPError: HTTP 000 CONNECTION FAILED for url <https://mirrors.tuna.ts
这个我一开始以为是我anaconda换了安装目录导致的,但经过查阅资料,应该是源的问题,anaconda换源后无法创建新的虚拟环境。我的解决办法:
找到这个.condarc
文件,这个在我的C:\Users\ZhongqiangWu
目录下面,把https
改成了http
就好了。
这样就能创建出tfenv的虚拟环境,然后激活activate tfenv
,进入环境。
// 安装TensorFlow-gpu
pip install tensorflow-gpu=2.0.0-beta0
此时等待下载,进行安装即可。安装完毕之后,测试是否安装成功。
在当前环境下,输入python进入环境,然后:
import tensorflow as tf
print(tf.test.is_gpu_available()) // 如果输出True,说明安装成功
但在我这里,导入TensorFlow的时候,报了一个错误:
ImportError: Could not find 'cudart64_100.dll'
TensorFlow requires that this DLL be installed in a directory that is named in your %PATH% environment variable
这个通过查资料,大部分得出的结论是这篇文章说的那样, 即cuda版本的问题, 这里会发现100,这其实意味着cuda要用10.0版本的,因为安装完cuda的时候,会在cuda的bin目录下面有这么一个dll文件:
也就是TensorFlow在导入的时候,会去找有没有这样的一个文件, 当然我这里tf2.0找的是10.0的这个,可能有的报错说找不到101.dll或者102.dll这种,这显然是cuda版本不匹配,要卸载掉当前的cuda, 重新安装对应版本的,或者卸载掉当前版本的tf,重新安装个别的版本的tf。但有种做法不提倡,有的竟然硬性的把这里的100.dll修改名字,改成101.dll这样,这叫投机取巧,并不是在解决问题。
我当时就非常纳闷, 我这里明明有这个文件,并且我也把这个bin目录加入到了环境变量里面,为啥还会报上面的这个找不到这个文件的错误呢?其实是费了一些时间的,网上也没找到好的办法,最后,我想到,可能是因为我anaconda启动的原因:
我anaconda这次安装到了D盘里面,然后依然是借助Anaconda Prompt启动了命令行,然后进入的虚拟环境。此时,我再想一个问题,我在虚拟环境里面输入python,然后import tensorflow的时候,此时tensorflow去找依赖的时候,是去哪里找呢?
怎么保证它这里是找的环境变量里面的配置呢?好像并没有进行设置,所以我猜测,它这里找dll的时候,可能是D:\Anaconda3\envs\tfenv\Library\bin目录下去找相关的dll文件,如果找不到,可能不会自动的去总的环境变量里面找,就直接报错了。
这个启发来自于,如果我们通过anaconda3自动安装cuda和Cudnn的时候,此时cudart64_100.dll是在D:\Anaconda3\envs\tfenv\Library\bin目录下的。而上面我们并没有通过anaconda3安装这俩哥们,而是手动安装的,那么在anaconda 自己的命令行里面可能找不到。
所以关于这个问题,我最终的解决办法,就是不用anaconda prompt启动命令行进虚拟环境,而是直接cmd打开系统的命令行,然后直接输入activate,进入root的环境,然后activate tfenv
进入到虚拟环境,此时再运行测试,发现成功。这个应该是走环境变量里面的文件了。
这里和上面就基本上是一样的过程了,这里是按照pytorch的GPU版本,首先是建立虚拟环境
conda create -n pytorch_gpu python=3.7
此时,又出现CondaHTTPError: HTTP 000 CONNECTION FAILED for url
, 真是服了, 此时我重新配置.condarc,修改成下面这个样子:
channels:
- http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
- http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
- http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/
- http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
show_channel_urls: true
把关掉,然后好使了。
接下来安装torch和torchvision, 进入下面这个网站: http://download.pytorch.org/whl/torch_stable.html, 找符合系统版本、cuda版本的torch,采用搜索的方式找
我的是cuda10.0, python3.7版本,win10系统,64位。下载下来。
torchvision同样的道理,把这两个.whl文件下载下来。然后回到命令行, 安装即可。
pip install "torch-1.2.0-cp37-cp37m-win_amd64.whl"
pip install "torchvision-0.4.0-cp37-cp37m-win_amd64.whl"
安装完毕,进行测试,依然是进入python环境,然后输入:
有了这一整套流程,在自己机子上搭建python环境,跑模型实验,就比较方便啦,不管是tf项目还是pytorch项目,都能用这一套环境实验。Linux上其实也是这样的流程,很多地方都是一样的,原理都是通的,无法就是配置环境变量的时候不太一样。
参考:
之前整理的文章链接也放过来:
大数据环境搭建下面的anaconda搭建
https://zhongqiang.blog.csdn.net/article/details/112376293
Python管理包工具anaconda安装过程常见问题解决办法
https://zhuanlan.zhihu.com/p/34337889
Python·Jupyter Notebook各种使用方法
https://blog.csdn.net/liuyanlin610/article/details/76231958
远程连接GPU服务器上的jupyter notebook解决方案
https://blog.csdn.net/wuzhongqiang/article/details/107555363
Windows下GPU版本详细安装教程
https://cloud.tencent.com/developer/article/1458665)
Windows下的Pytorch环境手把手搭建
https://zhongqiang.blog.csdn.net/article/details/104503860
往期精彩回顾
适合初学者入门人工智能的路线及资料下载机器学习及深度学习笔记等资料打印机器学习在线手册深度学习笔记专辑《统计学习方法》的代码复现专辑
AI基础下载黄海广老师《机器学习课程》视频课黄海广老师《机器学习课程》711页完整版课件
本站qq群851320808,加入微信群请扫码: