看来COCO PythonAPI只支持python2。但是人们确实在 python3 环境中使用它。
我尝试了可能的安装方法,比如
python3 setup.py build_ext --inplace
python3 setup.py install
但是python3 setup.py install
会因为包含 python2 打印功能coco.py
而失败。cocoeval.py
更新:通过更新COCO PythonAPI项目解决。把这个问题留给面临同样问题的人。
看来COCO PythonAPI只支持python2。但是人们确实在 python3 环境中使用它。
我尝试了可能的安装方法,比如
python3 setup.py build_ext --inplace
python3 setup.py install
但是python3 setup.py install
会因为包含 python2 打印功能coco.py
而失败。cocoeval.py
更新:通过更新COCO PythonAPI项目解决。把这个问题留给面临同样问题的人。
尝试以下步骤:
git clone https://github.com/cocodataset/cocoapi.git
2to3 . -w
. 请注意,您可能必须安装一个软件包才能获得 2to3。它是将代码从 Python2 转换为 Python3 的优雅工具;此代码将所有 .py 文件从 Python2 兼容转换为 Python3 兼容python3 setup.py install
这应该可以帮助您安装 COCO 或任何适用于 Python2 的包,并使用 Python3 运行该包。干杯!
而不是官方版本(与 python 3 有问题)使用替代版本。将它安装在您的本地机器上,全局安装(即,在任何虚拟环境之外)。您可以通过以下方式做到这一点:
pip install git+https://github.com/philferriere/cocoapi.git#subdirectory=PythonAPI
检查是否全局安装:
pip freeze | grep "pycocotools"
pycocotools==2.0.0
您应该在输出中看到类似的内容。
现在,在您的虚拟环境(conda 或其他)中,首先使用pipnumpy
安装和cython
(setuptools
如果未安装),然后:
pip install pycocotools
在您的项目中,导入(例如)from pycocotools import mask as mask
然后print(mask.__author__)
. 这应该打印出作者的名字,即tsungyi。
与使用pip在虚拟环境中本地安装的任何其他包一样,已安装的包将转到您项目的外部库,位于site-packages下。这意味着它现在是您的虚拟环境的一部分,而不是您的项目的一部分。因此,可能想要使用您的代码的其他用户也必须在他们的 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 版本匹配。如果不是这种情况,您可以使用 更改默认 python sudo update-alternatives --config 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
如果您正在努力在 Ubuntu 20.04 和 python3.7 上构建 pycocotools,请尝试以下操作:
sudo apt-get install -y python3.7-dev
python3.7 -m pip install pycocotools>=2.0.1
您也可以下载和使用 cocoapi 的替代版本(我使用的是 python 3.5)。这是您可能想尝试的解决方案:
如何下载和使用对象检测数据集(例如 coco 或 pascal)
这就是我成功的方法!(原因是gcc版本)
安装依赖:cython (pip install cython), opencv (pip install opencv-python)
通过以下命令检查 gcc 版本: gcc --version
您的输出将是这样的 'Command 'gcc' not found, 但可以安装: sudo apt install gcc '
键入以下命令来安装 gcc: sudo apt update
sudo apt install build-essential
sudo apt-get install manpages-dev
现在再次检查 gcc 版本(步骤 2),如果你得到低于输出
'gcc (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0 Copyright (C) 2019 Free Software Foundation, Inc. 这是免费软件;查看复制条件的来源。没有保修;甚至不是为了适销性或特定用途的适用性。
现在运行 pycocotools 安装的代码:
点安装“git+https://github.com/philferriere/cocoapi.git#egg=pycocotools&subdirectory=PythonAPI”
最后等待检查是否安装成功:
'成功安装 pycocotools-2.0'