前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >你踩过这个坑?

你踩过这个坑?

作者头像
公众号guangcity
发布2019-09-20 15:02:53
1.9K0
发布2019-09-20 15:02:53
举报

你踩过这个坑?

0.说在前面

这几天在做cs231n assignment2的时候,遇到了一个很严重的问题,但是现在解决了,所以就没问题。对于我而言,我非常喜欢问题,因为这样可以迅速提升自我,我们要学会针对性解决问题,遇事不怕的能力!那么我又碰到了什么问题了?如何利用谷歌很好的解决问题?下面一起来见证解决问题的方法!

这次跑的是cnn模型,需要cython支持,所以就会有问题,我想说的是因为这个问题,让许多人放弃了win系统,跑去装linux系统,我更想说的是,linux也好win也好,都有各的好处,有人说win简单,linux难,其实在我看来都一样,主要是我们得学会解决问题的能力,又想起了亮剑里面的一句话:“狭路相逢勇者胜”

1.No zuo No die

当我运行到fast layers的时候,碰到如下错误:name 'col2im_6d_cython' is not defined

呀,我碰到问题了,慌了,莫慌,来谷歌,又到网上搜了一大堆,没啥用,又不懂这个是啥子问题!

然后我们看报错地方,再看上面的注释解释,发现了一行很关键的命令我没执行,那就是:

The fast convolution implementation depends on a Cython extension; to compile it you need to run the following from the cs231n directory:python setup.py build_ext --inplace

中文意思是,这个fast卷积实现依赖于Cython扩展,你需要在cs231n目录下运行python setup.py build_ext --inplace

那很简单啊,问题也很明确,既然依赖于cython,那我们装一下,在运行一下不就ok了?

我们先来装一下,命令如下:

pip install -U cython

然后在dos下面或者git里面运行python setup.py build_ext --inplace,结果你猜怎么着?

又报错了,这次更严重了!!!

报了什么错?那就是:error: Unable to find vcvarsall.bat

这个又是啥子鬼,这个不是鬼东西,这想表达的是没有找到这个文件。

现在来说一下这个原理:在linux中有gcc直接编译,完全没问题,但是在win10中可是没有gcc的,那么对于win10中系统编译工具默认是visual studio!

当然网上也有mingw解决的,大家可以查查哈,这里不推荐这个办法,万一后面又出现问题呢,所以治病得根治!

下面来根治这个办法,通过谷歌,找到了How to deal with the pain of “unable to find vcvarsall.bat”这篇文章,不好意思,我找到的是纯英文,很好理解,并且是在微软官网!

How to deal with the pain of “unable to find vcvarsall.bat地址: https://blogs.msdn.microsoft.com/pythonengineering/2016/04/11/unable-to-find-vcvarsall-bat/

那么大家来看一下,官网给出的解决方案!

大家看到了没,对于不同的python环境,要求安装不同的vs,由于我的python为3.6哦,所以我就直接是第一个,上面的英文表达意思是,安装vs可以选择vs17,vs15!网上给出的解决方案都是vs15,我就想尝试新的哦,所以我就特立独行,装了个vs17,要用新的,嘿嘿~

vs17那里想表达的意思是:勾选Python开发,会发现右边有三个默认选项,不要修改这个默认选项,点击安装即可~

真的好简单啊,我们安装完,是不是能够解决呢?它又跟我们前面运行的python那个命令又有什么关系呢?

下面一步一步来揭秘吧!

不管是通过pip安装包,还是在这里出现的这个error没有发现这个.bat文件,问题都是表示distutils无法找到vcvarsall.bat脚本~

这个脚本作用是来设置编译环境~

此时我们来打开distutils文件夹里面的_msvccompiler.py这个文件~

由于我用的是anaconda3,所以这里我给出我的路径,如果你跟我的不同,可以直接search一下,有什么问题可以留言给我~

我的路径:D:\Anaconda3\Lib\distutils_msvccompiler.py

打开后,我们定位到_find_vcvarsall这个方法,这个就是来寻找那个vcvarsall.bat脚本的,也就是在执行这里的时候报错了,没有找到哦。看到了没有,这里我们只需要知道一点,那就是这里是将vs绑定到一块的,通过vs来找这个.bat文件。那么我们接下来工作很清楚了,看我们安装的vs里面有没有这个文件不就行了?

看似简单的问题,实则隐含巨大问题~

为什么会这么说呢?

谷歌了一下这个文件在vs的路径,找到是在

C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat

结果我进入我的文件夹下,压根没有这个Build文件夹,这么神奇的吗?

没有这个文件,肯定会报错~那么怎么搞到这个文件呢,我们就继续去谷歌,终于找到了解决问题的办法:

那就是在安装的时候,少安装了一个东东:

那就是没有勾选使用C++的桌面开发,安装这个之后,就可以,你再去找就有了,也就成功了~

真的是no zuo,no die,why you try~

总结一下,解决这个问题的方法,那就是直接安装如下图的两个东东就可以了,然后再次运行上面的python setup.py build_ext --inplace就可以了!

如下图所示,就是需要安装的东东:

如下图为运行后的截图:

然后重启jupyter notebook,再次运行就可以了,以后安装什么包也就不会出现问题了~

对于这个问题,到这里就圆满搞定了!

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-12-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 光城 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 你踩过这个坑?
    • 0.说在前面
      • 1.No zuo No die
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档