我是靠谱客的博主 纯真羊,最近开发中收集的这篇文章主要介绍Pycocotools Win10 排坑记录,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Pycocotools Win10 排坑记录

    • 前言
    • 环境
    • 准备内容:
    • 遇到的坑
      • unable to find a compatible visual studio installation
      • error: command 'cl.exe' failed: No such file or directory
      • LINK : fatal error LNK1158: cannot run 'rc.exe'
    • End
    • Test

前言

能找到这篇帖子的大家应该都知道pycocotools这么个玩意在win下有多难编译且安装成功。网上应该还能找到很多别的博主写的帖子也是关于安装这玩意的排坑日志。那么,为什么我还要另起一篇呢,当然是因为我自己遇到的坑即使动用了Google也没有找到什么好的解决方法。

目前我遇到的问题有两个:

  1. 找不到合适的编译器
  2. 链接错误

环境

本人使用的系统环境为

  • OS: Windows10 Pro 20H2
  • CPU: i7-7700
  • Py: Python 3.7.9
  • VS: 2013、2015、2017、2019

准备内容:

pycocotools我这边使用的是官方的版本,因为听说那个大佬魔改的版本已经不再更新了。

  • pycoctools的源码:官方最新版本

遇到的坑

unable to find a compatible visual studio installation

这个奇怪的错误在运行python setup.py build_ext --inplace的时候就发生了,发生该原因是因为在编译期间,py需要根据环境变量来进行配置(文件位置在:PATHTOYOURPYTHONLibdistutils_msvccompiler.py),该处就是环境变量vc_env
报错位置0
直接将该环境变量输出出来你会发现里面是空的,原因就在云_get_vc_env()函数中该处。调用命令行后对返回的Unicode解码出现了问题,解码出来的内容是乱码。将该解码方式由utf-16le修改为utf-8即可正常解码出所有的环境变量。
报错位置1

error: command ‘cl.exe’ failed: No such file or directory

接着,再次运行命令行会出现如标题的错误,找不到VS所使用的编译器cl.exe。此时就有点奇怪了
,因为我在系统设置的环境变量中,已经是有cl所在目录的路径的,并且随便打开一个cmd或者powershell都可以直接运行cl命令来编译文件。

问题同样出现在_msvccompiler.py文件中,在刚刚那个环境变量的下面一些位置,可以看到这个部分会去寻找编译器和链接器的位置,问题就在于:就算是正确使用了编码,在环境变量的字典_paths中是没有path这个Key的。将其输出后可以看到有的是Path这个字段。
报错位置2

不过就算是Path中的路径也和我们设置的系统中的路径不相同。所在在搜索之前,我们把cl和link等的路径加进去。(我的电脑上的cl在如下路径,各位电脑上自己的路径请自行更改)
报错位置3然后再把setup.py的编译参数去掉,就可以开始编译了。
编译参数0

LINK : fatal error LNK1158: cannot run ‘rc.exe’

再次编译,就会遇到这个错误。一看就是rc.exe没找到是吧。简单!只需要再把rc的路径加进去就行了是吧。nonono,本人试过了,把rc的路径加进去也一样找不到。没办法,只能把rc.exercdll.dll复制到和link.exe相同的文件夹下。(我的rc路径为D:Windows Kits10bin10.0.18362.0x64,仅供参考)

End

再次使用

python setup.py build_ext --inplace

python setup.py build_ext install

应该就会一路畅通,顺利安装完成了

成功示例

Test

就算这样安装完成,也不能确定能使用了。所以为了以防万一,这里加入了一个测试样例。

首先去COCO的官网下载一个简单的标签,这里我下的是2017 Testing Image info [1MB],因为这个文件是最小的。

然后随便建立一个py文件,输入如下内容:

from pycocotools.coco import COCO

if __name__ == '__main__':
    coco=COCO(r"PATHTOYOURDOWNLOADimage_info_test2017annotationsimage_info_test-dev2017.json")

    print('dona')

当出现:
在这里插入图片描述

基本就可以确定安装成功了。
写代码的,果然绕不过配置环境这个过程。

最后,希望这篇文章能给大家提供帮助。

最后

以上就是纯真羊为你收集整理的Pycocotools Win10 排坑记录的全部内容,希望文章能够帮你解决Pycocotools Win10 排坑记录所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(40)

评论列表共有 0 条评论

立即
投稿
返回
顶部