Fatal Error LNK1181: cannot open input file 'png.lib' while installing matplotlib==3.0.3

Viewed 733

I have been trying to install matplotlib==3.0.3 in a conda environment. I have installed MS Visual Build tools for C++ and added rc.exe and rcdll.dll to bin folder in Microsoft Visual Studio 14.0. Please take a look and help me out.

 Complete output (56 lines):
    ============================================================================
    Edit setup.cfg to change the build options

    BUILDING MATPLOTLIB
                matplotlib: yes [3.0.3]
                    python: yes [3.8.3 (default, Jul  2 2020, 17:30:36) [MSC
                            v.1916 64 bit (AMD64)]]
                  platform: yes [win32]

    REQUIRED DEPENDENCIES AND EXTENSIONS
                     numpy: yes [version 1.18.5]
          install_requires: yes [handled by setuptools]
                    libagg: yes [pkg-config information for 'libagg' could not
                            be found. Using local copy.]
                  freetype: yes [Using unknown version found on system.]
                       png: yes [Using unknown version found on system.]
                     qhull: yes [pkg-config information for 'libqhull' could not
                            be found. Using local copy.]

    OPTIONAL SUBPACKAGES
               sample_data: yes [installing]
                  toolkits: yes [installing]
                     tests: no  [skipping due to configuration]
            toolkits_tests: no  [skipping due to configuration]

    OPTIONAL BACKEND EXTENSIONS
                       agg: yes [installing]
                     tkagg: yes [installing; run-time loading from Python Tcl /
                            Tk]
                    macosx: no  [Mac OS-X only]
                 windowing: yes [installing]

    OPTIONAL PACKAGE DATA
                      dlls: no  [skipping due to configuration]

    running install
    running build
    running build_py
    copying lib\matplotlib\mpl-data\matplotlibrc -> build\lib.win-amd64-3.8\matplotlib\mpl-data
    UPDATING build\lib.win-amd64-3.8\matplotlib\_version.py
    set build\lib.win-amd64-3.8\matplotlib\_version.py to '3.0.3'
    running build_ext
    building 'matplotlib._png' extension
    creating build\temp.win-amd64-3.8
    creating build\temp.win-amd64-3.8\Release
    creating build\temp.win-amd64-3.8\Release\src
    C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\x86_amd64\cl.exe /c /nologo /Ox /W3 /GL /DNDEBUG /MD -DPY_ARRAY_UNIQUE_SYMBOL=MPL_matplotlib__png_ARRAY_API -DNPY_NO_DEPRECATED_API=NPY_1_7_API_VERSION -D__STDC_FORMAT_MACROS=1 -IC:\Anaconda3\envs\rev_env\lib\site-packages\numpy\core\include -IC:\Anaconda3\envs\rev_env\Library\include -I. -IC:\Anaconda3\envs\rev_env\include -IC:\Anaconda3\envs\rev_env\include "-IC:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.10240.0\ucrt" "-IC:\Program Files (x86)\Windows Kits\8.1\include\shared" "-IC:\Program Files (x86)\Windows Kits\8.1\include\um" "-IC:\Program Files (x86)\Windows Kits\8.1\include\winrt" /EHsc /Tpsrc/_png.cpp /Fobuild\temp.win-amd64-3.8\Release\src/_png.obj
    _png.cpp
    src/_png.cpp(336): warning C4244: 'argument': conversion from 'Py_ssize_t' to 'int', possible loss of data
    src/_png.cpp(318): warning C4996: 'sprintf': This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
    C:\Program Files (x86)\Windows Kits\10\include\10.0.10240.0\ucrt\stdio.h(1769): note: see declaration of 'sprintf'
    C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\x86_amd64\cl.exe /c /nologo /Ox /W3 /GL /DNDEBUG /MD -DPY_ARRAY_UNIQUE_SYMBOL=MPL_matplotlib__png_ARRAY_API -DNPY_NO_DEPRECATED_API=NPY_1_7_API_VERSION -D__STDC_FORMAT_MACROS=1 -IC:\Anaconda3\envs\rev_env\lib\site-packages\numpy\core\include -IC:\Anaconda3\envs\rev_env\Library\include -I. -IC:\Anaconda3\envs\rev_env\include -IC:\Anaconda3\envs\rev_env\include "-IC:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.10240.0\ucrt" "-IC:\Program Files (x86)\Windows Kits\8.1\include\shared" "-IC:\Program Files (x86)\Windows Kits\8.1\include\um" "-IC:\Program Files (x86)\Windows Kits\8.1\include\winrt" /EHsc /Tpsrc/mplutils.cpp /Fobuild\temp.win-amd64-3.8\Release\src/mplutils.obj
    mplutils.cpp
    C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\x86_amd64\link.exe /nologo /INCREMENTAL:NO /LTCG /DLL /MANIFEST:EMBED,ID=2 /MANIFESTUAC:NO /LIBPATH:C:\Anaconda3\envs\rev_env\Library\lib /LIBPATH:C:\Anaconda3\envs\rev_env\libs /LIBPATH:C:\Anaconda3\envs\rev_env\PCbuild\amd64 "/LIBPATH:C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\LIB\amd64" "/LIBPATH:C:\Program Files (x86)\Windows Kits\10\lib\10.0.10240.0\ucrt\x64" "/LIBPATH:C:\Program Files (x86)\Windows Kits\8.1\lib\winv6.3\um\x64" png.lib z.lib /EXPORT:PyInit__png build\temp.win-amd64-3.8\Release\src/_png.obj build\temp.win-amd64-3.8\Release\src/mplutils.obj /OUT:build\lib.win-amd64-3.8\matplotlib\_png.cp38-win_amd64.pyd /IMPLIB:build\temp.win-amd64-3.8\Release\src\_png.cp38-win_amd64.lib
    LINK : fatal error LNK1181: cannot open input file 'png.lib'
    error: command 'C:\\Program Files (x86)\\Microsoft Visual Studio 14.0\\VC\\BIN\\x86_amd64\\link.exe' failed with exit status 1181
1 Answers

I hope you found a solution, but if not, here is one: accourding to the matplot source code here, on windows you probably should create z.lib and png.lib somewhere, then set the LINK environment variable to point to them.

 If not using pkg-config (in particular on Windows), you may need to set the
   include path (to the FreeType, libpng, and zlib headers) and link path (to
   the FreeType, libpng, and zlib libraries) explicitly, if they are not in
   standard locations.  This can be done using standard environment variables
   and on Windows:

   .. code-block:: bat

      set CL=/IC:\directory\containing\ft2build.h ...
      set LINK=/LIBPATH:C:\directory\containing\freetype.lib ...

   where ``...`` means "also give, in the same format, the directories
   containing ``png.h`` and ``zlib.h`` for the include path, and for
   ``libpng.so``/``png.lib`` and ``libz.so``/``z.lib`` for the link path."
Related