python - 致命错误 LNK1181:安装 matplotlib==3.0.3 时无法打开输入文件“png.lib”
问题描述
我一直在尝试在 conda 环境中安装 matplotlib==3.0.3。我已经为 C++ 安装了 MS Visual Build 工具,并将 rc.exe 和 rcdll.dll 添加到 Microsoft Visual Studio 14.0 的 bin 文件夹中。请看一下并帮助我。
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
解决方案
我希望你找到了一个解决方案,但如果没有,这里有一个:根据 matplot source code here,在 windows 上你可能应该在某个地方创建 z.lib 和 png.lib,然后将 LINK 环境变量设置为指向它们。
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."
推荐阅读
- typo3 - 在 powermail 中进行验证,而无需根据需要声明该字段(TYPO3 10,Powermail)
- java - 在处理中创建彼此内部的无限循环
- laravel - Laravel @foreach 重复
- r - 如何在 R 中制作分层集群热图?
- javascript - 使用firestore在集合中添加/更新数组并做出本机反应
- bash - Bash 脚本尾部与模式不匹配
- php - 提交表单后,在 javascript 中使用 PHP 文件中的 echo json?
- content-management-system - 在 forestry.io 中有一个自定义 url
- python - 我如何定义 f(x) = python 中的一些积分
- python - 无法创建 conda 环境 MacOS