cocodataset / cocoapi

COCO API - Dataset @ http://cocodataset.org/
Other
6.07k stars 3.75k forks source link

Installing Pycocotools on windows 11 #627

Open sajidahmed12 opened 1 year ago

sajidahmed12 commented 1 year ago

For Building Pycocotools on Windows First, we need to download Visual C++ Latest Build Tools from Visual Studio 2022 Build Tools: https://aka.ms/vs/17/release/vs_buildtools.exe.

Now, Check the Pycocotools/PythonAPI folder and modify the setup.py file change these couple of lines as the following code and run this command again.

Previously :

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

Remove: '-Wno-cpp', '-Wno-unused-function' from the ext_modules Extension in setup.py

Only keep '-std=c99', and it will look like this.

extra_compile_args=['-std=c99']

Now run this command once again.

'Python setup.py build_ext --inplace' , this should successfully build the pycocotools in windows 11.

I did it during the installation of pycocotools on my computer. My question is why did it worked and what was the issue for [this error] (https://stackoverflow.com/questions/74596492/windows-11-pycocotools-package-installation-error/74657073?fbclid=IwAR0o_grhd18Nq89VKWgUZsZsImLqCQp8WGZhiciJUONvrvDKBrH9pYtooqI)
???

trzy commented 1 year ago

Hi @sajidahmed12 -- I've been trying to get Pycocotools to build with a Python 3.10 environment and here is the issue I'm encountering (followed your instructions):

(centernet) C:\tmp\cocoapi-master\PythonAPI>Python setup.py build_ext --inplace
running build_ext
skipping 'pycocotools\_mask.c' Cython extension (up-to-date)
building 'pycocotools._mask' extension
"C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.32.31326\bin\HostX86\x86\cl.exe" /c /nologo /O2 /W3 /GL /DNDEBUG /MD -IC:\Users\Bart\anaconda3\envs\centernet\lib\site-packages\numpy\core\include -I../common -IC:\Users\Bart\anaconda3\envs\centernet\include -IC:\Users\Bart\anaconda3\envs\centernet\Include "-IC:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.32.31326\include" "-IC:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.32.31326\ATLMFC\include" "-IC:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\VS\include" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.22000.0\ucrt" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22000.0\\um" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22000.0\\shared" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22000.0\\winrt" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22000.0\\cppwinrt" "-IC:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\include\um" "-IC:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.32.31326\ATLMFC\include" "-IC:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.32.31326\include" "-IC:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\include\um" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.22000.0\ucrt" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22000.0\\shared" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22000.0\\um" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22000.0\\winrt" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22000.0\\cppwinrt" /Tc../common/maskApi.c /Fobuild\temp.win32-cpython-310\Release\../common/maskApi.obj -std=c99
cl : Command line warning D9002 : ignoring unknown option '-std=c99'
maskApi.c
"C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.32.31326\bin\HostX86\x86\cl.exe" /c /nologo /O2 /W3 /GL /DNDEBUG /MD -IC:\Users\Bart\anaconda3\envs\centernet\lib\site-packages\numpy\core\include -I../common -IC:\Users\Bart\anaconda3\envs\centernet\include -IC:\Users\Bart\anaconda3\envs\centernet\Include "-IC:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.32.31326\include" "-IC:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.32.31326\ATLMFC\include" "-IC:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\VS\include" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.22000.0\ucrt" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22000.0\\um" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22000.0\\shared" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22000.0\\winrt" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22000.0\\cppwinrt" "-IC:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\include\um" "-IC:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.32.31326\ATLMFC\include" "-IC:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.32.31326\include" "-IC:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\include\um" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.22000.0\ucrt" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22000.0\\shared" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22000.0\\um" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22000.0\\winrt" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22000.0\\cppwinrt" /Tcpycocotools\_mask.c /Fobuild\temp.win32-cpython-310\Release\pycocotools\_mask.obj -std=c99
cl : Command line warning D9002 : ignoring unknown option '-std=c99'
_mask.c
C:\Users\Bart\anaconda3\envs\centernet\lib\site-packages\numpy\core\include\numpy\npy_1_7_deprecated_api.h(14) : Warning Msg: Using deprecated NumPy API, disable it with #define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION
"C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.32.31326\bin\HostX86\x86\link.exe" /nologo /INCREMENTAL:NO /LTCG /DLL /MANIFEST:EMBED,ID=2 /MANIFESTUAC:NO /LIBPATH:C:\Users\Bart\anaconda3\envs\centernet\libs /LIBPATH:C:\Users\Bart\anaconda3\envs\centernet /LIBPATH:C:\Users\Bart\anaconda3\envs\centernet\PCbuild\win32 "/LIBPATH:C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.32.31326\ATLMFC\lib\x86" "/LIBPATH:C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.32.31326\lib\x86" "/LIBPATH:C:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\lib\um\x86" "/LIBPATH:C:\Program Files (x86)\Windows Kits\10\lib\10.0.22000.0\ucrt\x86" "/LIBPATH:C:\Program Files (x86)\Windows Kits\10\\lib\10.0.22000.0\\um\x86" "/LIBPATH:C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.32.31326\ATLMFC\lib\x86" "/LIBPATH:C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.32.31326\lib\x86" "/LIBPATH:C:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\lib\um\x86" "/LIBPATH:C:\Program Files (x86)\Windows Kits\10\lib\10.0.22000.0\ucrt\x86" "/LIBPATH:C:\Program Files (x86)\Windows Kits\10\\lib\10.0.22000.0\\um\x86" /EXPORT:PyInit__mask build\temp.win32-cpython-310\Release\../common/maskApi.obj build\temp.win32-cpython-310\Release\pycocotools\_mask.obj /OUT:build\lib.win32-cpython-310\pycocotools\_mask.cp310-win_amd64.pyd /IMPLIB:build\temp.win32-cpython-310\Release\../common\_mask.cp310-win_amd64.lib
   Creating library build\temp.win32-cpython-310\Release\../common\_mask.cp310-win_amd64.lib and object build\temp.win32-cpython-310\Release\../common\_mask.cp310-win_amd64.exp
_mask.obj : error LNK2001: unresolved external symbol __imp__PyBaseObject_Type
_mask.obj : error LNK2001: unresolved external symbol __imp__PyObject_SetAttr
_mask.obj : error LNK2001: unresolved external symbol __imp__PyUnicode_InternFromString
_mask.obj : error LNK2001: unresolved external symbol __imp__PyCFunction_Type
_mask.obj : error LNK2001: unresolved external symbol __imp__PyOS_snprintf
_mask.obj : error LNK2001: unresolved external symbol __imp__PyThreadState_Get
_mask.obj : error LNK2001: unresolved external symbol __imp__PyExc_Exception
_mask.obj : error LNK2001: unresolved external symbol __imp__PyErr_SetObject
_mask.obj : error LNK2001: unresolved external symbol __imp__PyCode_NewEmpty
_mask.obj : error LNK2001: unresolved external symbol __imp__PyErr_GivenExceptionMatches
_mask.obj : error LNK2001: unresolved external symbol __imp__PyLong_AsUnsignedLong
_mask.obj : error LNK2001: unresolved external symbol __imp__PyErr_WarnEx
_mask.obj : error LNK2001: unresolved external symbol __imp__PyFrame_New
_mask.obj : error LNK2001: unresolved external symbol __imp__PyLong_AsSsize_t
_mask.obj : error LNK2001: unresolved external symbol __imp__PyExc_DeprecationWarning
_mask.obj : error LNK2001: unresolved external symbol __imp__PyExc_KeyError
_mask.obj : error LNK2001: unresolved external symbol __imp__Py_LeaveRecursiveCall
_mask.obj : error LNK2001: unresolved external symbol __imp__PyImport_ImportModule
_mask.obj : error LNK2001: unresolved external symbol __imp___PyLong_AsByteArray
_mask.obj : error LNK2001: unresolved external symbol __imp__PyImport_ImportModuleLevelObject
_mask.obj : error LNK2001: unresolved external symbol __imp__PyErr_NormalizeException
_mask.obj : error LNK2001: unresolved external symbol __imp__PyErr_Occurred
_mask.obj : error LNK2001: unresolved external symbol __imp__PyLong_FromSsize_t
_mask.obj : error LNK2001: unresolved external symbol __imp__PyObject_GenericGetAttr
_mask.obj : error LNK2001: unresolved external symbol __imp__PyTraceBack_Here
_mask.obj : error LNK2001: unresolved external symbol __imp___PyThreadState_UncheckedGet
_mask.obj : error LNK2001: unresolved external symbol __imp__PyExc_RuntimeError
_mask.obj : error LNK2001: unresolved external symbol __imp__PyMethod_New
_mask.obj : error LNK2001: unresolved external symbol __imp__PyObject_SetAttrString
_mask.obj : error LNK2001: unresolved external symbol __imp__PyLong_FromLong
_mask.obj : error LNK2001: unresolved external symbol __imp__PyObject_GC_UnTrack
_mask.obj : error LNK2001: unresolved external symbol __imp__PyObject_Hash
_mask.obj : error LNK2001: unresolved external symbol __imp__PyDict_GetItemWithError
_mask.obj : error LNK2001: unresolved external symbol __imp__PyInterpreterState_GetID
_mask.obj : error LNK2001: unresolved external symbol __imp__PyLong_FromUnsignedLongLong
_mask.obj : error LNK2001: unresolved external symbol __imp__Py_GetVersion
_mask.obj : error LNK2001: unresolved external symbol __imp__PyObject_GetAttr
_mask.obj : error LNK2001: unresolved external symbol __imp__PyLong_AsUnsignedLongLong
_mask.obj : error LNK2001: unresolved external symbol __imp__PyBytes_FromString
_mask.obj : error LNK2001: unresolved external symbol __imp___Py_NoneStruct
_mask.obj : error LNK2001: unresolved external symbol __imp__PyLong_AsLongLong
_mask.obj : error LNK2001: unresolved external symbol __imp__PyTuple_New
_mask.obj : error LNK2001: unresolved external symbol __imp__PySequence_Contains
_mask.obj : error LNK2001: unresolved external symbol __imp__PyDict_SetItemString
_mask.obj : error LNK2001: unresolved external symbol __imp__PyDict_Size
_mask.obj : error LNK2001: unresolved external symbol __imp__PyLong_FromLongLong
_mask.obj : error LNK2001: unresolved external symbol __imp__PyFloat_FromDouble
_mask.obj : error LNK2001: unresolved external symbol __imp__PyExc_AttributeError
_mask.obj : error LNK2001: unresolved external symbol __imp__PyTuple_GetSlice
_mask.obj : error LNK2001: unresolved external symbol __imp__PyNumber_Multiply
_mask.obj : error LNK2001: unresolved external symbol __imp__PyErr_SetString
_mask.obj : error LNK2001: unresolved external symbol __imp__PyObject_GetIter
_mask.obj : error LNK2001: unresolved external symbol __imp__PyNumber_Add
_mask.obj : error LNK2001: unresolved external symbol __imp__PyErr_WarnFormat
_mask.obj : error LNK2001: unresolved external symbol __imp__PyExc_ValueError
_mask.obj : error LNK2001: unresolved external symbol __imp__PyLong_FromUnsignedLong
_mask.obj : error LNK2001: unresolved external symbol __imp__PyDict_Next
_mask.obj : error LNK2001: unresolved external symbol __imp__PyErr_Format
_mask.obj : error LNK2001: unresolved external symbol __imp__PyDict_Type
_mask.obj : error LNK2001: unresolved external symbol __imp__PyObject_RichCompare
_mask.obj : error LNK2001: unresolved external symbol __imp__PyTuple_Type
_mask.obj : error LNK2001: unresolved external symbol __imp___Py_FalseStruct
_mask.obj : error LNK2001: unresolved external symbol __imp__PyNumber_InPlaceAdd
_mask.obj : error LNK2001: unresolved external symbol __imp__PyFloat_Type
_mask.obj : error LNK2001: unresolved external symbol __imp___PyLong_FromByteArray
_mask.obj : error LNK2001: unresolved external symbol __imp__PyModule_NewObject
_mask.obj : error LNK2001: unresolved external symbol __imp__PyMethod_Type
_mask.obj : error LNK2001: unresolved external symbol __imp__PyLong_Type
_mask.obj : error LNK2001: unresolved external symbol __imp__PyType_IsSubtype
_mask.obj : error LNK2001: unresolved external symbol __imp__PyErr_Restore
_mask.obj : error LNK2001: unresolved external symbol __imp__PyExc_OverflowError
_mask.obj : error LNK2001: unresolved external symbol __imp___Py_Dealloc
_mask.obj : error LNK2001: unresolved external symbol __imp__PyTuple_GetItem
_mask.obj : error LNK2001: unresolved external symbol __imp__PyImport_GetModuleDict
_mask.obj : error LNK2001: unresolved external symbol __imp__PyModule_GetDict
_mask.obj : error LNK2001: unresolved external symbol __imp__PyObject_Free
_mask.obj : error LNK2001: unresolved external symbol __imp__PyErr_ExceptionMatches
_mask.obj : error LNK2001: unresolved external symbol __imp__PyCapsule_GetPointer
_mask.obj : error LNK2001: unresolved external symbol __imp__PyObject_GC_Del
_mask.obj : error LNK2001: unresolved external symbol __imp__PyErr_Fetch
_mask.obj : error LNK2001: unresolved external symbol __imp__PyLong_AsLong
_mask.obj : error LNK2001: unresolved external symbol __imp__PyObject_ClearWeakRefs
_mask.obj : error LNK2001: unresolved external symbol __imp__PyObject_Not
_mask.obj : error LNK2001: unresolved external symbol __imp__PyUnicode_AsUTF8
_mask.obj : error LNK2001: unresolved external symbol __imp__PyUnicode_FromFormat
_mask.obj : error LNK2001: unresolved external symbol __imp__PyObject_GetBuffer
_mask.obj : error LNK2001: unresolved external symbol __imp__PyList_New
_mask.obj : error LNK2001: unresolved external symbol __imp__PyObject_GC_IsFinalized
_mask.obj : error LNK2001: unresolved external symbol __imp__PyImport_AddModule
_mask.obj : error LNK2001: unresolved external symbol __imp__PyType_Ready
_mask.obj : error LNK2001: unresolved external symbol __imp__PyObject_GetAttrString
_mask.obj : error LNK2001: unresolved external symbol __imp__PyErr_Clear
_mask.obj : error LNK2001: unresolved external symbol __imp__PyList_Append
_mask.obj : error LNK2001: unresolved external symbol __imp__PyBytes_Type
_mask.obj : error LNK2001: unresolved external symbol __imp__PyObject_RichCompareBool
_mask.obj : error LNK2001: unresolved external symbol __imp__PyUnicode_Decode
_mask.obj : error LNK2001: unresolved external symbol __imp__PyCode_New
_mask.obj : error LNK2001: unresolved external symbol __imp__PyException_SetTraceback
_mask.obj : error LNK2001: unresolved external symbol __imp___PyObject_GenericGetAttrWithDict
_mask.obj : error LNK2001: unresolved external symbol __imp__PyDict_SetItem
_mask.obj : error LNK2001: unresolved external symbol __imp__PyDict_New
_mask.obj : error LNK2001: unresolved external symbol __imp__PyUnicode_Type
_mask.obj : error LNK2001: unresolved external symbol __imp__PyObject_CallFinalizerFromDealloc
_mask.obj : error LNK2001: unresolved external symbol __imp___PyDict_GetItem_KnownHash
_mask.obj : error LNK2001: unresolved external symbol __imp__PyNumber_Index
_mask.obj : error LNK2001: unresolved external symbol __imp__PyExc_StopIteration
_mask.obj : error LNK2001: unresolved external symbol __imp__PyCMethod_New
_mask.obj : error LNK2001: unresolved external symbol __imp__PyList_Type
_mask.obj : error LNK2001: unresolved external symbol __imp__PyDict_GetItemString
_mask.obj : error LNK2001: unresolved external symbol __imp__PyObject_GetItem
_mask.obj : error LNK2001: unresolved external symbol __imp__PyObject_CallObject
_mask.obj : error LNK2001: unresolved external symbol __imp__PyModuleDef_Init
_mask.obj : error LNK2001: unresolved external symbol __imp__PyObject_GC_Track
_mask.obj : error LNK2001: unresolved external symbol __imp__PyBytes_FromStringAndSize
_mask.obj : error LNK2001: unresolved external symbol __imp__PyDict_DelItem
_mask.obj : error LNK2001: unresolved external symbol __imp__PyUnicode_Compare
_mask.obj : error LNK2001: unresolved external symbol __imp__PyObject_IsSubclass
_mask.obj : error LNK2001: unresolved external symbol __imp__PyExc_TypeError
_mask.obj : error LNK2001: unresolved external symbol __imp__PyMem_Realloc
_mask.obj : error LNK2001: unresolved external symbol __imp__PyCapsule_Type
_mask.obj : error LNK2001: unresolved external symbol __imp__PyObject_IsTrue
_mask.obj : error LNK2001: unresolved external symbol __imp__PyExc_NameError
_mask.obj : error LNK2001: unresolved external symbol __imp__PyTuple_Pack
_mask.obj : error LNK2001: unresolved external symbol __imp___PyUnicode_Ready
_mask.obj : error LNK2001: unresolved external symbol __imp__PyMem_Malloc
_mask.obj : error LNK2001: unresolved external symbol __imp__PyExc_IndexError
_mask.obj : error LNK2001: unresolved external symbol __imp__Py_EnterRecursiveCall
_mask.obj : error LNK2001: unresolved external symbol __imp__PyExc_ImportError
_mask.obj : error LNK2001: unresolved external symbol __imp___Py_TrueStruct
_mask.obj : error LNK2001: unresolved external symbol __imp__PyExc_SystemError
_mask.obj : error LNK2001: unresolved external symbol __imp___PyObject_GC_New
_mask.obj : error LNK2001: unresolved external symbol __imp__PyException_SetCause
_mask.obj : error LNK2001: unresolved external symbol __imp__PyType_Modified
_mask.obj : error LNK2001: unresolved external symbol __imp__PyTraceBack_Type
_mask.obj : error LNK2001: unresolved external symbol __imp__PyUnicode_FromString
_mask.obj : error LNK2001: unresolved external symbol __imp__PyLong_FromSize_t
_mask.obj : error LNK2001: unresolved external symbol __imp___PyType_Lookup
_mask.obj : error LNK2001: unresolved external symbol __imp__PyObject_Size
_mask.obj : error LNK2001: unresolved external symbol __imp__PyBuffer_Release
_mask.obj : error LNK2001: unresolved external symbol __imp__PyObject_Call
_mask.obj : error LNK2001: unresolved external symbol __imp__PyUnicode_FromStringAndSize
_mask.obj : error LNK2001: unresolved external symbol __imp___PyObject_GetDictPtr
build\lib.win32-cpython-310\pycocotools\_mask.cp310-win_amd64.pyd : fatal error LNK1120: 142 unresolved externals
error: command 'C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.32.31326\\bin\\HostX86\\x86\\link.exe' failed with exit code 1120

Any ideas? It seems like there is a missing Python-related library here.

cannacak commented 1 year ago

Here is the solution worked for me : Download the file beneath https://drive.google.com/file/d/1KI0sfJBw8moRioFcLQrziS-BOXpy_KZt/view?usp=sharing

Copy these files to C:\Users\XXX\AppData\Local\Programs\Python\Python311\Lib\site-packages

jg925 commented 1 year ago

I was able to simply pip install pycocotools after installing the latest Desktop C++ tools. I'm currently using Python 3.10.