COCO PythonAPI似乎只支持python2。但人们确实在python3环境中使用它。
我尝试了可能的方法来安装它,比如
python3 setup.py build_ext --inplace
python3 setup.py install
但由于python3 setup.py install
和coco.py
包含python2打印功能,cocoeval.py
将失败。
更新:通过更新COCO PythonAPI项目解决。将问题留给面临同样问题的人。
答案 0 :(得分:3)
请尝试以下步骤:
git clone https://github.com/cocodataset/cocoapi.git
。2to3 . -w
。请注意,您可能必须安装包才能获得2to3。它是将代码从Python2转换为Python3的优雅工具。此代码将所有.py文件从Python2兼容转换为Python3兼容。python3 setup.py install
。这应该可以帮助您安装COCO或任何用于Python2的软件包,并使用Python3运行该软件包。干杯!
答案 1 :(得分:1)
使用alternative one代替正式版本(Python 3出现问题)。将其安装在本地全局上(即,在任何虚拟环境之外)。您可以通过以下方式做到这一点:
pip install git+https://github.com/philferriere/cocoapi.git#subdirectory=PythonAPI
检查是否已全局安装:
pip freeze | grep "pycocotools"
您应该在输出中看到类似pycocotools==2.0.0
的内容。
现在,在您的虚拟环境中(conda或其他),首先使用 pip安装numpy
和cython
(如果尚未安装,则可能安装setuptools
) ,然后:
pip install pycocotools
在您的项目中,导入(例如)from pycocotools import mask as mask
,然后导入print(mask.__author__)
。这应该打印出作者的名字,即 tsungyi 。
已安装的软件包,与使用 pip 在虚拟环境中本地安装的任何其他软件包一样,将进入项目的外部库中的网站包装。这意味着它现在是您的虚拟环境的一部分,而不是您的项目的一部分。因此,其他可能希望使用您的代码的用户也必须在其virtual-env上重复此安装。
造成混乱的主要原因是,您没有在安装cocoapi之前安装所需的软件包,或者您已安装了所需的软件包,但安装了其他python版本。而且,当您要检查是否安装了某些软件时,可以使用python 3.6 进行检查,并查看它是否存在,但是实际上您正在使用python 3.7 运行所有命令。强>。因此,假设您正在使用 python3.7 。您需要确保:
python -V
为您提供了 python3.7 而不是其他版本,而pip -V
为您提供了pip 19.2.3 from /home/<USER>/.local/lib/python3.7/site-packages/pip (python3.7)
,该版本实际上与您的默认python版本匹配。如果不是这种情况,则可以使用sudo update-alternatives --config python
并按照一步一步的说明来更改默认python。
使用正确的 python 或 pip 版本安装所有必需的软件包。您可以使用pip
和pip3
进行检查,以停止可能导致问题的任何差异:
pip freeze | grep "<SUBSTRING-NAME-OF-PACKAGE>"
或pip show <PACKAGE-NAME>
,以获取 pip 的最新版本。
要安装必需的软件包,请在确定(1)之后,运行:
sudo apt install python-setuptools python3.7-dev python3-wheel build-essential
和pip install numpy cython matplotlib
上进行了测试。
答案 2 :(得分:1)
如果您正在努力在 Ubuntu 20.04 和 python3.7 上构建 pycocotools 试试这个:
sudo apt-get install -y python3.7-dev
python3.7 -m pip install pycocotools>=2.0.1
答案 3 :(得分:0)
也可以下载和使用cocoapi的其他版本(我正在使用python 3.5)。您可以尝试以下解决方案:
How to download and use object detection datasets (e.g. coco or pascal)
答案 4 :(得分:0)