【问题探究】使用pip安装pycocotools(COCOAPI)的过程中遇到的一些问题

前言:

{

    我想使用COCO数据集[1]来调试多目标识别,所以下载完数据集后,我就跟API教程[2]操作。结果遇到一堆问题,郁闷的是使用别人写的api所花的时间比完全自己写所要花的时间还要多的多(至少翻2倍)。

}

 

正文:

{

    遇到的第一个问题是关于字符编码的错误。

    首先直接安装pycocotools,但出现图1中的问题。

【问题探究】使用pip安装pycocotools(COCOAPI)的过程中遇到的一些问题_第1张图片 图1

    我感觉很奇怪,一是出现问题的不是需要下载的包,而是之前早就存在的文件;二是出现"utf-8"相关的错误一般都是因为中文字符(一般是在路径中出现了中文字符),但这次安装涉及的路径和之前一样都是默认的。

    我在谷歌上搜到了[3],并且按照上面有70多个赞的解决方法解决了这个问题。

 

    我不是很清楚第二个问题和什么有关,如图2。

【问题探究】使用pip安装pycocotools(COCOAPI)的过程中遇到的一些问题_第2张图片 图2

    后来我搜到了[4],看到了有20几个赞的解决方法,这个方法需要先自行下载相关代码,之后再进行相关修改。

    另一种解决方法[5]中说原先的代码不支持windows,直接下载[6]中的代码即可解决此问题。我选择后者。

 

    第三个问题是如何下载github上的文件夹(和其中的所有文件)。

    pycocotools是一个文件夹,其中有很多文件。一个一个地拷贝很麻烦,所以我就搜到了一个下载github上文件夹的工具[7],很好用。下载好pycocotools后直接把pycocotools文件夹解压到\Lib\site-packages\里,并且还要下载common里的文件[8]。

    [5]中也给出了一种方法,我先略过了。

 

    第四个问题是pip的升级问题。

    每次我使用pip,它总提示我升级,这次我就顺便把它升级了。直接使用pip upgrade自己果不其然失败了,见图3。

图3(pip:我删我自己)

    之后问题就来了:pip.exe删不掉自己,其他的相关文件倒是可以被其删掉。所以这个pip已经废了(pip:我废我自己),不如直接重新下载最新的pip。下载过程见[9]。

 

    第五个问题是“ “io.h”: No such file or directory”,或者说文件路径的问题。这个问题卡我最久。

    在谷歌上我搜到了[10],上面说要运行vcvars批处理和添加环境变量,但我都试了还是不行。

【问题探究】使用pip安装pycocotools(COCOAPI)的过程中遇到的一些问题_第3张图片 图4(已经添加到用户变量和系统变量)

    之后实在没办法,我就用了一个笨办法:把需要的头文件全部拷贝到程序环境中的include文件夹。但之后另一个问题出现了:lib文件放哪?能放的地方我都放了,可是程序就是不识别。

    之后实在是没办法了,我就先关了VS去做别的事情了。奇怪的是等我下次打开VS再次调试此程序时,错误变了(估计是设置了环境变量后VS需要重启),见图5。

【问题探究】使用pip安装pycocotools(COCOAPI)的过程中遇到的一些问题_第4张图片 图5

    关于这个问题,在谷歌上搜不到有针对性的解决方案(LNK1120的错误太多了)。后来我发现rleToString等符号在common里的maskApi.c中有定义。但是我不知道要把maskApi.c放在哪。我也想过用它来生成lib文件,但这样就太麻烦了,本来不应该这么麻烦的。

    所以我放弃了,改用了[5]中提到了另一种方法。这种方法要用到git程序[11]。

 

    第六个问题是git的clone速度太慢。如果你有(网络)代理,[12]是个不错的解决方法,只需要一行命令。

 

    第七个问题是"rc.exe"运行失败。我直接在Windows Kits里搜到了这个程序,之后直接把其目录加到了PATH环境变量里,(之后cmd要重启一次)。

}

 

结语:

{

    关于问题一,后来我才发现我打开了错误的pip(刚开始安装环境的时候留下的坑,详见“Python从零开始”系列),另外升级到18.1后的pip貌似没这个问题(正确位置的老版本pip让我装Cython[13],之后不升级pip的话还是会出现这个问题)。

    另外,使用Cython的文件.pyx之前需要使用pyximport[14]。

    图6是pycocotools的调用结果(打印类别)。

【问题探究】使用pip安装pycocotools(COCOAPI)的过程中遇到的一些问题_第5张图片 图6

 

    总结一下教训:下次使用其他工具时如果出现错误,至少要先看一下其使用方法。

    我想腾出时间来学习《数据图像处理》和研究新模型,所以这次更新也算是充数。

    参考资料:

    {

        [1]http://cocodataset.org/

        [2]https://github.com/cocodataset/cocoapi/blob/master/PythonAPI/pycocoDemo.ipynb

        [3]https://github.com/pypa/pip/issues/4251

        [4]https://github.com/cocodataset/cocoapi/issues/51

        [5]https://blog.csdn.net/heiheiya/article/details/81128749

        [6]https://github.com/philferriere/cocoapi/tree/master/PythonAPI

        [7]https://minhaskamal.github.io/DownGit/#/home

        [8]https://github.com/cocodataset/cocoapi/tree/master/common

        [9]https://pip.pypa.io/en/stable/installing/

        [10]https://stackoverflow.com/questions/40018405/cython-cannot-open-include-file-io-h-no-such-file-or-directory?answertab=active#tab-top

        [11]https://www.git-scm.com/download/win

        [12]https://blog.csdn.net/initialdmg/article/details/74999176

        [13]http://docs.cython.org/en/latest/src/quickstart/overview.html

        [14]https://cython.readthedocs.io/en/latest/src/reference/compilation.html

    }

}

你可能感兴趣的:(问题探究,python)