[PYTHON] Si vous êtes bloqué lors de la construction de pycocoapi sous Windows

Notez que je suis resté coincé en essayant de faire pip install pycocoapi normalement sur Windows.

(Le contenu suivant concerne principalement le dépannage + α sur https://github.com/cocodataset/cocoapi/issues/51. [Autres articles] sur Qiita (https://qiita.com/kekekekenta/items/ca9d5d1f197c373656ec) ), Mais j'ai ajouté diverses choses parce que le drapeau du compilateur n'était pas suffisant et que la construction était mousseuse.)

Fondamentalement, cloner avec git et build

Si git n'est pas inclus en premier lieu, git for windows.

git clone https://github.com/cocodataset/cocoapi.git

Donc, je suis définitivement en train d'essayer de construire.

cd cocoapi\PythonAPI
python setup.py build_ext install

#Divers messages d'erreur ci-dessous

Donc, à partir d'ici, dépannez en fonction du contenu du message d'erreur.

1. cl.exe manquant

ʻError: command'cl.exe 'failed: Non Si vous obtenez un message d'erreur comme fichier ou répertoire`, cl.exe n'est pas dans votre PATH.

La solution la plus simple consiste à installer Visual Studio et à utiliser ** Invite de commandes développeur **. (Puisqu'il existe divers articles sur la façon d'installer, voir ici.)

À propos, il existe différents types d'invites de commande pour les développeurs, mais cette fois, j'utiliserai ** l'invite de commande x64 Native Tools **.

Pour le démarrer, installez Visual Studio et tapez «x64 Native» dans la barre de recherche.

SnapCrab_NoName_2020-3-30_12-36-21_No-00.png

2. Wno-cpp ne peut pas être utilisé

Maintenant, lancez l'invite de commande x64 Native Tools pour VS2017 et

cd cocoapi\PythonAPI #Chemin de cocoapi cloné avec git
python setup.py build_ext install

Quand je cours, j'obtiens un message d'erreur comme «argument numérique invalide» / Wno-cpp ». (À propos, si vous obtenez une erreur indiquant que python n'existe pas avant cela, le PATH de python n'est pas dans votre chemin.)

Donc, videz ʻextra_compile_args autour de la 14e ligne de cocoapi \ PythonAPI \ setup.py` comme suit.

extra_compile_args=[],
#extra_compile_args=['-Wno-cpp', '-Wno-unused-function', '-std=c99'],

Après la réécriture, réessayez.

3. math.h manquant, basetsd.h manquant, etc.

Cette fois, on dit que le fichier d'en-tête est insuffisant, alors réécrivez ʻinclude_dirs dans cocoapi \ PythonAPI \ setup.py` comme suit.

include_dirs = [np.get_include(), '../common', 'C:/Program Files (x86)/Windows Kits/10/Include/10.0.17763.0/ucrt', 'C:/Program Files (x86)/Windows Kits/10/Include/10.0.17763.0/winrt','C:/Program Files (x86)/Windows Kits/10/Include/10.0.17763.0/um','C:/Program Files (x86)/Windows Kits/10/Include/10.0.17763.0/shared'],
#include_dirs = [np.get_include(), '../common'],

4. kernel32.lib manquant

Maintenant que l'indicateur de l'éditeur de liens est absent, ** ajoutez ce qui suit à la ligne suivant ʻinclude_dirs` **.

library_dirs = ['C:/Program Files (x86)/Windows Kits/10/Lib/10.0.17763.0/um/x64','C:/Program Files (x86)/Windows Kits/10/Lib/10.0.17763.0/ucrt/x64'],

Au fait, le setup.py final ressemble à ceci.

from setuptools import setup, Extension
import numpy as np

# To compile and install locally run "python setup.py build_ext --inplace"
# To install library to Python site-packages run "python setup.py build_ext install"

ext_modules = [
    Extension(
        'pycocotools._mask',
        sources=['../common/maskApi.c', 'pycocotools/_mask.pyx'],
        include_dirs = [np.get_include(), '../common', 'C:/Program Files (x86)/Windows Kits/10/Include/10.0.17763.0/ucrt', 'C:/Program Files (x86)/Windows Kits/10/Include/10.0.17763.0/winrt','C:/Program Files (x86)/Windows Kits/10/Include/10.0.17763.0/um','C:/Program Files (x86)/Windows Kits/10/Include/10.0.17763.0/shared'],
        library_dirs = ['C:/Program Files (x86)/Windows Kits/10/Lib/10.0.17763.0/um/x64','C:/Program Files (x86)/Windows Kits/10/Lib/10.0.17763.0/ucrt/x64'],
        extra_compile_args=[],
    )
]

setup(
    name='pycocotools',
    packages=['pycocotools'],
    package_dir = {'pycocotools': 'pycocotools'},
    install_requires=[
        'setuptools>=18.0',
        'cython>=0.27.3',
        'matplotlib>=2.1.0'
    ],
    version='2.0',
    ext_modules= ext_modules
)

5. rc.exe manquant

C'est le dernier fort. Ajoutez C: \ Program Files (x86) \ Windows Kits \ 10 \ bin \ x64 à votre PATH, rouvrez l'invite de commande x64 Native Tools et exécutez la même commande.

(Si vous ne souhaitez pas ajouter ce dossier à votre PATH, copiez simplement le rc.exe et le rcdll.dll à l'intérieur et placez-les dans un dossier de votre PATH.)

6. Enfin, la construction passe

Ah, c'était un long chemin. Vous pouvez vérifier s'il est correctement installé avec la commande suivante.

python
>>> from pycocotools.coco import COCO
>>> 

OK si aucune erreur ne se produit.

Recommended Posts

Si vous êtes bloqué lors de la construction de pycocoapi sous Windows
Si vous êtes bloqué dans Impossible de charger mkl_intel_thread.dll en Python sous Windows
Que faire si vous êtes bloqué pendant l'installation d'Anaconda sur Linux
Si vous êtes accro à pip, installez dlib sur OSX
Solution si heroku plante lors de l'utilisation de sélénium
Que faire si vous obtenez l'erreur ʻERR_FEATURE_UNAVAILABLE_ON_PLATFORM` lors de l'utilisation de ts-node-dev sous Linux
Solution lorsque Django démarrer le projet n'est pas possible sous Windows
Point de contrôle lorsque le robot de retour LINE Parrot est accro à Heroku
Quand j'obtiens une erreur avec Pylint sur Windows Atom
Si vous êtes en colère contre "trop peu de mises à jour ~" lors de l'exécution de LdaModel
Que faire si vous vous mettez en colère si vous n'avez pas libxml / xmlversion.h lors de l'installation de lxml sur CentOS
Que faire si vous obtenez "La session n'a pas pu être ouverte" lors de l'installation de CentOS sur VirtualBox
Que faire si vous obtenez une erreur d'autorisation refusée (clé publique) lorsque vous essayez de tirer sur le hub Git
Si vous souhaitez utiliser NumPy, Pandas, Matplotlib, IPython, SciPy sous Windows
Que faire si vous obtenez une erreur lors du chargement de mnist
Wrapper lorsque vous souhaitez afficher la couleur utf-8 + ansi dans la console Windows
Lorsque vous tombez sur le démarrage rapide d'uWSGI
Création d'un environnement pour "Tello_Video" sous Windows
Solution de contournement si vous obtenez une erreur lors de la tentative d'installation de PySide avec pip
Que faire si vous obtenez une erreur lors de l'installation de python avec pyenv
Si vous obtenez une longue erreur lors de la tabulation d'un shell interactif avec Anaconda
Que faire si vous obtenez l'erreur "Erreur: opencv3: Ne prend pas en charge la construction des wrappers Python 2 et 3" lors de l'installation d'openCV 3
[python] [vscode] Lorsque vous vous fâchez avec space-tab-mixed
Élimine l'erreur SSL lors de l'installation PIP sur Windows.
Si vous vous perdez avec les redirections HTTP 301 et 302
Que faire si vous obtenez une erreur OpenSSL lors de l'installation de Python 2 avec pyenv
Que faire si le Microsoft Store s'ouvre même si vous exécutez python sous Windows
Que faire si vous obtenez une erreur de mémoire lors de la conversion de PySparkDataFrame en PandasDataFrame
Que faire si vous obtenez une erreur lors de l'importation de matplotlib en Python (Mac)
Que faire si vous obtenez une erreur d'importation lors de l'importation de matplotlib avec Jupyter
Que faire si vous obtenez une erreur lors du vagabondage lorsque vous activez public_network ou private_network sur Vagrant + Arch Linux → Installer netctl