API更改

如果更新Matplotlib会破坏脚本,此列表可能会帮助您找出导致中断的原因以及如何通过更新代码来修复它。

有关旧版本中的API更改,请参见

下面列出了最新版本的更改。有关添加到Matplotlib的新功能,请参见 新鲜事 .

3.2.0的API更改

行为改变

减少的默认值 rcParams["axes.formatter.limits"] (default: [-5, 6])

更改了默认值 rcParams["axes.formatter.limits"] (default: [-5, 6]) 从-7,7到-5,6以提高可读性。

(Source code _, pngpdf

../_images/api_changes-1.png

matplotlib.colorbar.Colorbar 所有可映射轴的规范化使用

Before 3.0, matplotlib.colorbar.Colorbar (colorbar) normalized all axes limits between 0 and 1 and had custom tickers to handle the labelling of the colorbar ticks. After 3.0, colorbars constructed from mappables that were not contours were constructed with axes that had limits between vmin and vmax of the mappable's norm, and the tickers were made children of the normal axes tickers.

此版本的Matplotlib将其扩展到由等高线生成的可映射图,并允许轴在等高线的最低边界和最高边界之间运行。

需要修改在0和1之间正常化的代码。

MovieWriterRegistry

MovieWriterRegistry 现在总是在返回writer类之前检查它们的可用性。例如,如果希望获得第一个可用的writer,而不必对后续的writer执行可用性检查,那么现在可以遍历registry,从而得到可用类的名称。

自标定

Matplotlib用于在每次打印后重新计算自动缩放的限制 (plot()bar() 等等)打电话。现在,它只在实际渲染画布时,或当用户查询轴限制时才这样做。这是对有大量艺术家的情节的一个重大改进。

特别是,这意味着艺术家手动添加 Axes.add_lineAxes.add_patch ,等将被自动缩放考虑在内,即使没有显式调用 Axes.autoscale_view .

在某些情况下,这可能导致报告不同的限值。如果这是一个问题,考虑触发与 fig.canvas.draw .

对于基于 Collection 班级。以前,计算自动限制的方法 Collection.get_datalim 尝试将集合中对象的大小考虑在内,并使限制足够大,以不剪辑任何对象,即 Axes.scatter 这会使限制足够大,不至于在散布中剪掉任何标记。当在物理空间或图形相对空间中指定对象大小时,这是有问题的,因为从物理单位到数据限制的转换需要知道数据限制,并且在应用新的限制时将变得无效。这是一个理论上可以解决的反问题(如果对象在物理上比轴小),但是额外的复杂性并不值得,特别是最常见的用例是分散中的标记,这些标记通常很小,可以由默认的数据限制边距容纳。

虽然新行为在算法上更简单,但它取决于 Collection 对象:

  1. offsets = Nonetransform 是的孩子 Axes.transData :使用自动限制的路径(即 LineCollection 在里面 Axes.streamplot
  2. offsets != Noneoffset_transform 是的子项 Axes.transData
  1. transform 是的子项 Axes.transData 使用 path + offset 对于
    限制(即 Axes.bar
  2. transform 不是的孩子 Axes.transData :只需使用偏移量
    限制(即分散)
  1. 否则返回null Bbox .

虽然这看起来很复杂,但逻辑上只是使用数据空间中对象的信息来限制,而不是物理单位中的信息。

日志比例尺()/hist()自动限制

中的自限计算 barhist 当轴已经使用对数标度已更改以匹配计算时,在调用后将轴切换为对数比例 barhist 打电话时 bar(..., log=True) / hist(..., log=True) :如果至少有两个不同的条形图高度,则向其添加法线轴边距(按对数刻度);如果只有一个条形图高度,则将其周围的轴限制展开一个数量级,然后应用轴边距。

跨越多行/列的轴标签

Axes.label_outer 现在正确地保持x标签和记号标签对于跨越多行的轴可见,只要它们覆盖轴网格的最后一行。(这与保持y标签和记号标签对于跨越多个列的轴可见是一致的,只要它们覆盖轴网格的第一列)

这个 Axes.is_last_rowAxes.is_last_col 方法现在正确地为跨越多行的轴返回True,只要它们分别覆盖最后一行或最后一列。这同样与覆盖第一行或第一列的轴的行为一致。

这个 Axes.rowNumAxes.colNum 不推荐使用属性,因为它们只引用轴覆盖的第一个网格单元。相反,使用新的 ax.get_subplotspec().rowspanax.get_subplotspec().colspan 属性 range 对象,该对象指示子批所覆盖的行和列的整个范围。

(请注意,这里提到的所有方法和属性实际上只存在于 Subplot 亚类 Axes ,用于栅格定位轴,但不用于直接在绝对坐标系中定位的轴。)

这个 GridSpec 班级获得 nrowsncols 属性作为返回的参数的更显式同义词 GridSpec.get_geometry .

定位器

当超过 Locator.MAXTICKS 滴答声的行为 Locator.raise_if_exceeds 从引发RuntimeError更改为以警告级别发出日志。

非奇异定位器

Locator.nonsingular (在mpl 3.1中介绍), DateLocator.nonsingularAutoDateLocator.nonsingular 现在返回一个范围 v0, v1 具有 v0 <= v1 . 这种行为与 nonsingularLogLocatorLogitLocator 子类。

get_data_ratio

Axes.get_data_ratio 现在在计算y-x比之前,考虑轴的比例(线性、对数、对数等)。这一改变允许固定方面应用于任何x和y刻度的组合。

艺术家粘边

以前, sticky_edges 艺术家的属性是一个值列表,这样如果轴限制与粘滞边重合,它将不会被轴边距扩展(这是一种防止在图像周围添加页边距的机制)。

sticky_edges 现在对页边距的应用有一个额外的影响:即使轴的限制与粘滞边不一致,它也不能 交叉 一个通过边距应用程序的粘滞边缘——相反,边距只会扩展轴限制,直到它碰到粘滞边缘为止。

此更改提高了显示 streamplot

  • 如果流图一直延伸到向量场的边缘,则轴限制将被设置为与向量场限制完全匹配(而它们有时会因为之前的小浮点错误而关闭)。
  • 如果流图没有到达矢量场的边缘(例如,由于使用 start_pointsmaxlength ),则边距扩展将不再跨越向量场限制。

这种变化也用于内部,以确保极坐标图不会显示为负数 r 值,除非用户真的传入负值。

gid 在svg输出中

以前,如果一个人物,轴心,传说或其他艺术家有一个习惯 gid 设置(例如通过 .set_gid() ),这不会反映在svg输出中。而是默认的gid,比如 figure_1 会显示出来的。现在这是固定的,例如。 fig.set_gid("myfigure") 正确地显示为 <g id="myfigure"> 在svg文件中。如果依赖于gid具有默认格式,那么现在需要确保不设置 gid 艺术家的参数。

字体

现在,在尝试匹配字体名称中的子字符串之前,先检查FT_STYLE_BOLD_标志是否存在。特别是,这意味着,时代新罗马粗体现在被正确地检测为粗体,而不是正常的重量。

像颜色一样的检查

matplotlib.color.is_colorlike() 用于为浮点的所有字符串表示返回True。但是,只有值在0-1之间的颜色才是有效颜色(表示灰度值)。 is_colorlike() 现在返回False表示0-1外的浮点字符串。

默认图像插值

在Matplotlib中显示的图像以前使用最近邻插值,导致了向下缩放和非整数向上缩放的混叠效果。

的新默认值 rcParams["image.interpolation"] (default: 'antialiased') 新选项是“抗锯齿”。 imshow(A, interpolation='antialiased') 在中重新采样以供显示(或保存到文件)时将应用汉宁过滤器 if 上采样率小于因子3,而不是整数;下采样的数据在重采样时总是平滑的。

要改变以前的行为,就要 rcParams["image.interpolation"] (default: 'antialiased') 到旧的默认值“最近”(或指定 interpolation 克沃格 Axes.imshow

要始终获得消除混叠行为,无论上/下采样率如何,请设置 rcParams["image.interpolation"] (default: 'antialiased') 到“汉宁”(或其他可用的过滤器之一)。

请注意,选择“hanning”过滤器是因为它的性能损失不大。反走样可以用其他过滤器改进。

RCPARAMS

使用时 RendererSVG 具有 rcParams["svg.image_inline"] == True ,外部写入的图像现在使用单个计数器,即使 renderer.basename 属性被重写,而不是每个basename一个计数器。

只有当你使用 rcParams["svg.image_inline"] = True (默认为False) and 手动修改 renderer.basename .

更改了默认值 rcParams["axes.formatter.limits"] (default: [-5, 6]) 从-7,7到-5,6以提高可读性。

add_subplot()

Figure.add_subplot()pyplot.subplot() 不接受 figure 关键字参数了。它只在传递的数字是 self 或者是现在的数字。

indicate_inset()

在<=3.1.0中, indicate_insetindicate_inset_zoom 被记录为返回 ConnectionPatch ,实际上他们返回了一个4长度的列表。

它们现在正确返回4元组。 indicate_inset 如果可选的 inset_ax 未提供;它现在成功完成,并返回 None 而不是 ConnectionPatch .

PGF后端

pgf后端的get_canvas_width_height现在以显示单位返回画布大小,而不是以前那样以英寸为单位。考虑到 get_canvas_width_height 在代码库的其余部分。

pgf后端现在包括使用 \includegraphics 而不是 \pgfimage 如果 graphicx 最近足以支持 interpolate 选项(自动检测)。

cbook

“obj_type”参数的默认值 cbook.warn_deprecated 已从“attribute”(从未在内部使用的默认值)更改为空字符串。

测试

默认情况下,测试套件不再打开Python错误处理程序。制定标准 PYTHONFAULTHANDLER 这样做的环境变量。

后端 supports_blit

后端不需要显式定义标志 supports_blit 不再。这只与后端开发人员相关。后端必须定义标志 supports_blit . 这不再需要了,因为现在可以自动检测到blitting功能。

异常更改

引发 ValueError 如果输入错误,请立即提高 TypeError 而是: backend_bases.GraphicsContextBase.set_clip_pathblocking_input.BlockingInput.__call__cm.register_cmapdviread.DviFontrcsetup.validate_hatchrcsetup.validate_animation_writer_pathspines.Spine ,许多班级 matplotlib.transforms 模块和 matplotlib.tri 包和Axis方法 norm 参数。

如果将额外的kwargs传递给 LogScaleTypeError 现在将被提高而不是 ValueError .

mplot3d自动注册

mpl_toolkits.mplot3d 现在总是默认注册。不再需要导入mplot3d来创建具有以下内容的三维轴:

ax = fig.add_subplot(111, projection="3d")

SymLogNorm 现在有一个 base 参数

以前, SymLogNorm 没有 base 关键字参数和基被硬编码为 base=np.e . 这与的默认行为不一致 SymmetricalLogScale (默认为 base=10 )以及文档中“十年”一词的使用。

为了准备将默认基数更改为10,调用 SymLogNorm 没有新的 base 关键字参数发出弃用警告。

贬抑

matplotlib.use

这个 warn 参数到 matplotlib.use() 已弃用(捕获 ImportError 在后端交换机发生故障时发出,如果需要,请自己重新发出警告)。

绘图文件

pyplot.plotfile 不赞成单独加载和绘制数据。看到了吗 从文件打印数据 对于使用pandas或NumPy加载数据以及pandas或matplotlib绘制结果数据的各种方法。

轴和轴

设置 Axis.major.locatorAxis.minor.locatorAxis.major.formatterAxis.minor.formatter 对象不是的子类 LocatorFormatter (分别)已弃用。注意,这些属性通常应该使用 Axis.set_major_locatorAxis.set_minor_locator ,等,当传递错误类的对象时,已引发异常。

将多个位置参数或不受支持的关键字参数传递给 axis() 已弃用(这种参数过去通常被静默忽略)。

minor 参数将仅成为关键字

使用参数 minorget_*ticks() / set_*ticks() 因为不推荐使用位置参数。它将成为关键字只在未来的版本。

axes_grid1

这个 mpl_toolkits.axes_grid1.colorbar 模块及其colorbar实现被弃用,取而代之的是 matplotlib.colorbar ,因为前者基本上已被放弃,而后者则是一个更具特色的替代品,使用了一个几乎兼容的API(例如,支持以下附加关键字: panchorextendfracextendrect

主要区别在于:

  • 通过调用 colorbar.set_ticks 而不是 colorbar.cbar_axis.set_xtickscolorbar.cbar_axis.set_ytickslocator 参数到 colorbar() 反对使用它的同义词 ticks (以前已经存在,并且与 matplotlib.colorbar
  • 使用访问colorbar的长轴 colorbar.xaxiscolorbar.yaxis 取决于方向,而不是 colorbar.cbar_axis .
  • 默认的股票代码不再是 MaxNLocator(5) 但A _ColorbarAutoLocator .
  • 在单个轴上重叠绘制多个颜色条(例如,当使用 cax 属性 ImageGrid 元素)不受支持;如果先前依赖于在第一个颜色条上绘制第二个颜色条,则可以调用 cax.cla() 在绘制第二个颜色条之前清除轴。

在折旧期间 mpl_toolkits.legacy_colorbar rcParam可以设置为True以使用 mpl_toolkits.axes_grid1.colorbar 在里面 mpl_toolkits.axes_grid1 带有不推荐警告的代码(默认),或设置为False以使用 matplotlib.colorbar .

通过A pad 尺寸 None (默认)作为零的同义词 append_axesnew_horizontalnew_vertical 方法 axes_grid1.axes_divider.AxesDivider 已弃用。在将来的版本中,默认值 None 意思是“使用 rcParams["figure.subplot.wspace"] (default: 0.2) 或 rcParams["figure.subplot.hspace"] (default: 0.2) “(取决于方位)。显式传递 pad=0 保持原来的行为。

Axes3D公司

mplot3d.axis3d.get_flip_min_max 被贬低。

axes3d.unit_bbox 已弃用(使用 Bbox.unit 相反)。

axes3d.Axes3D.w_xaxis.w_yaxis.w_zaxis 已弃用(使用 .xaxis.yaxis.zaxis 相反)。

matplotlib.cm

cm.revcmap 已弃用。使用 Colormap.reversed 反转颜色贴图。

cm.datad 不再包含“未转换”形式的反转颜色贴图条目。

斧头艺术家

mpl_toolkits.axisartist.grid_finder.GridFinderBase 已弃用(它的唯一用途是由 GridFinder 类,它只是在构造函数中提供更多默认值并直接设置转换,因此 GridFinderBase 的方法被转移到 GridFinder

axisartist.axis_artist.BezierPath 已弃用(使用 patches.PathPatch 绘制任意路径)。

AxisArtist.line 现在是 patches.PathPatch 实例而不是 BezierPath 实例。

从axisartist定位器返回一个等于None的因子(它们是 not 与“标准”记号定位器相同),或将等于“无”的因子传递给axisartist格式化程序(它们是 not 与“标准”记号格式化程序相同)已弃用。传递一个等于1的因子。

对于 mpl_toolkits.axisartist.axis_artist.AttributeCopier 类、构造函数和 set_ref_artist 方法,以及 default_value 参数 get_attribute_from_ref_artist ,已弃用。

弃用构造函数意味着继承自 AttributeCopier 不应再调用其构造函数。

定位器

未使用的 Locator.autoscale() 方法已弃用(将轴限制传递给 Locator.view_limits() 相反)。

动画

的以下方法和属性 MovieWriterRegistry 类已弃用: set_dirtyensure_not_dirtyreset_available_writersavail .

smart_bounds()

不推荐使用“智能边界”功能。这包括 Axis.set_smart_bounds()Axis.get_smart_bounds()Spine.set_smart_bounds()Spine.get_smart_bounds() .

boxplot()

设置 whis 参数 Axes.boxplotcbook.boxplot_stats 将“range”设置为“the whole data range”是不推荐使用的;将其设置为(0,100)(它被解释为百分位),以达到相同的效果。

fill_between()

向参数传递标量 在哪里? 在里面 fill_between()fill_betweenx() 已弃用。虽然文件已经声明 在哪里? 尺寸必须与 x (或) y ),标量被接受并广播到 x . 不匹配的大小将引发 ValueError 未来。

tight_layout()

这个 renderer 参数到 Figure.tight_layout 已弃用;此方法现在始终使用缓存在 Figure .

RCPARAMS

这个 rcsetup.validate_animation_writer_path 函数已弃用。

设置 rcParams["savefig.format"] (default: 'png') to“auto”已弃用;请改用其同义词“png”。

设置 rcParams["text.hinting"] (default: 'auto') totrue或False是不推荐的;使用它们的同义词“auto”或“none”。

rcsetup.update_savefig_format 被贬低。

rcsetup.validate_path_exists 已弃用(使用 os.path.exists 检查路径是否存在)。

rcsetup.ValidateInterval 被贬低。

日期

dates.mx2num 被贬低。

TK

NavigationToolbar2Tk.set_active 已弃用,因为它没有(可观察的)效果。

WX

FigureFrameWx.statusbarNavigationToolbar2Wx.statbar 已弃用。可以通过调用标准wx方法来检索状态栏 (frame.GetStatusBar()toolbar.GetTopLevelParent().GetStatusBar()

backend_wx.ConfigureSubplotsWx.configure_subplotsbackend_wx.ConfigureSubplotsWx.get_canvas 被贬低。

PGF

backend_pgf.repl_escapetextbackend_pgf.repl_mathdefault 被贬低。

RendererPgf.latexManager 被贬低。

FigureCanvas

FigureCanvasBase.draw_cursor (它从未做过任何事情,也从未在任何后端重写过)被弃用。

FigureCanvasMac.invalidate 反对使用它的同义词, FigureCanvasMac.draw_idle .

这个 dryrun 参数 FigureCanvasFoo.print_foo 方法已弃用。

箭袋钥匙文件

quiver.QuiverKey.quiverkey_doc 不赞成;使用 quiver.QuiverKey.__init__.__doc__ 相反。

matplotlib.mlab

mlab.apply_windowmlab.stride_repeat 被贬低。

字体

font_manager.JSONEncoder 已弃用。使用 font_manager.json_dump 倾倒 FontManager 实例。

font_manager.createFontList 被贬低。 font_manager.FontManager.addfont 现在可以在给定路径注册字体。

这个 as_stras_rgba_stras_arrayget_widthget_height 方法 matplotlib.ft2font.FT2Image 已弃用。转换 FT2Image 到一个带有 np.asarray 在处理之前。

颜色

函数 matplotlib.colors.makeMappingArray 不再被视为公共API的一部分。因此,它被弃用了。

不推荐使用单字符颜色字符串作为颜色序列(例如“rgb”)。改用显式列表。

规模

将不支持的关键字参数传递给 ScaleBase ,及其子类 LinearScaleSymmetricalLogScale ,已弃用,将引发 TypeError 在3.3中。

如果额外的关键字参数传递给 LogScaleTypeError 现在将被提高而不是 ValueError .

测试

这个 matplotlib.testing.disable_internet 模块已弃用。使用(例如) pytest-remotedata 相反。

支持 matplotlib.testing for-nose-based tests被弃用(如果在1)matplotlib的conftests未被调用和2)nose处于 sys.modules

testing.is_called_from_pytest 被贬低。

在弃用期间,若要强制生成鼻根测试,请先导入鼻。

这个 switch_backend_warn 参数到 matplotlib.test 没有效果,已弃用。

testing.jpl_units.UnitDbl.UnitDbl.checkUnits 被贬低。

DivergingNorm renamed to TwoSlopeNorm

DivergingNorm was a misleading name; although the norm was developed with the idea that it would likely be used with diverging colormaps, the word 'diverging' does not describe or evoke the norm's mapping function. Since that function is monotonic, continuous, and piece-wise linear with two segments, the norm has been renamed to TwoSlopeNorm

误码率

matplotlib.get_home 已弃用(例如。 os.path.expanduser("~") 相反。

matplotlib.compare_versions 已弃用(使用 distutils.version.LooseVersion 而不是s)。

matplotlib.checkdep_ps_distiller 被贬低。

matplotlib.figure.AxesStack 被视为私有API,在将来的版本中将从公共API中删除。

BboxBase.is_unit 已弃用(如果需要,请检查Bbox扩展数据块)。

Affine2DBase.matrix_from_values(...) 已弃用。使用(例如) Affine2D.from_values(...).get_matrix() 相反。

style.core.is_style_filestyle.core.iter_style_files 被贬低。

这个 datapath RCPARAM

使用 get_data_path 相反。(rcParam已弃用,因为最终用户无法对其进行有意义的设置。)rcParam在3.2.0中没有任何效果,但仅在3.2.1中被弃用。3.2.1+如果 'datapath' 设置在 matplotlibrc 文件将被尊重,但此行为将在3.3中删除。

移除

这个 matplotlib.testing.determinism 未公开公共API的模块已被删除。

已删除以下API元素:

  • backend_gtk3.PIXELS_PER_INCH
  • backend_pgf.re_escapetextbackend_pgf.re_mathdefault .
  • 这个 matplotlib.backends.tkaggmatplotlib.backends.windowingmatplotlib.backends.wx_compatmatplotlib.compat.subprocess 模块
  • RcParams.msg_depr, RcParams.msg_depr_ignore, RcParams.msg_depr_set, RcParams.msg_obsolete, RcParams.msg_backend_obsolete
  • afm.parse_afm (使用) afm.AFM instead
  • axes.Axes.mouseover_set
  • backend_cairo.ArrayWrapper, backend_cairo.RendererCairo.convert_path
  • backend_gtk3.FileChooserDialog.sorted_filetypes (使用) sorted(self.filetypes.items()) 相反)
  • backend_pgf.get_texcommand
  • backend_pdf.PdfFile.texFontMap
  • backend_ps.get_bbox
  • backend_qt.FigureCanvasQt.keyAutoRepeat (use event.guiEvent.isAutoRepeat instead), backend_qt.error_msg_qt, backend_qt.exception_handler
  • backend_wx.FigureCanvasWx.macros
  • backends.pylab_setup
  • cbook.Bunch (use types.SimpleNamespace instead), cbook.Locked, cbook.unicode_safe, cbook.is_numlike (use isinstance(..., numbers.Number) instead), cbook.mkdirs (use os.makedirs(..., exist_ok=True) instead), cbook.GetRealpathAndStat (use cbook.get_realpath_and_stat instead), cbook.listFiles
  • container.Container.set_remove_method
  • contour.ContourLabeler.clcontour.ContourLabeler.cl_xycontour.ContourLabeler.cl_cvalues (使用) labelTextslabelXYslabelCValues 相反)
  • dates.DateFormatter.strftime, dates.DateFormatter.strftime_pre_1900
  • font_manager.TempCache, font_manager.FontManager.ttffiles, font_manager.FontManager.afmfiles
  • mathtext.unichr_safe (使用) chr 相反)
  • patches.YAArrow (使用) patches.FancyArrowPatch 相反)
  • sphinxext.plot_directive.remove_coding
  • table.Table.get_child_artists
  • testing.compare.compare_floattesting.decorators.CleanupTesttesting.decorators.ImageComparisonTesttesting.decorators.skip_if_command_unavailable ,支持基于鼻子的测试
  • text.Annotation.arrow (使用) text.Annotation.arrow_patch 相反)
  • textpath.TextToPath.tex_font_map
  • ticker.Base, ticker.closeto, ticker.nearest_long
  • axes_grid1.axes_divider.LocatableAxesBaseaxes_grid1.axes_divider.locatable_axes_factoryaxes_grid1.axes_divider.Axes (使用) axes_grid1.mpl_axes.Axes 取而代之的是, axes_grid1.axes_divider.LocatableAxes (使用) axes_grid1.mpl_axes.Axes 相反)
  • axisartist.axes_divider.Axesaxisartist.axes_divider.LocatableAxes (使用) axisartist.axislines.Axes 相反)
  • 这个 normed 克瓦格 hist (使用) density 相反)
  • 这个 verts 参数到 scatter (使用) marker 相反)
  • 经过 (verts, 0)(..., 3) 指定标记以分别指定路径或圆时(改为使用 verts"o" 分别为)
  • rcParams["examples.directory"]

以下成员 matplotlib.backends.backend_pdf.PdfFile 已删除:

  • nextObject
  • nextFont
  • nextAlphaState
  • nextHatch
  • nextImage
  • alphaStateObject

这个 required_interactive_framework Matplotlib 3.0中引入的后端模块的属性已移动到 FigureCanvas 类,以便让第三方canvas子类继承它,并更容易知道canvas类需要什么样的交互框架。

backend_qt4.FigureCanvasQT5 ,它是的别名 backend_qt5.FigureCanvasQT (但只存在于 backend_qt4 ),已被删除。

发展变化

Windows内部版本

以前,在构建 matplotlib._png 扩展时,构建脚本将向扩展添加“png”和“z” .libraries 属性(如果pkg配置信息不可用,在Windows上尤其如此)。

特别是,这意味着Windows构建将查找名为 png.libz.lib ;但默认情况下,libpng upstream和zlib upstream都不提供这些文件。(在Linux上,这可以查到 libpng.solibz.so ,这确实是标准名称。)

相反,在Windows上,我们现在可以查找 libpng16.libzlib.lib 哪一个 are 共享库的上游名称(从libpng 1.6.x开始)。

对于静态链接的构建,上游名称是 libpng16_static.libzlibstatic.lib ;如果需要这样的构建,仍然需要手动重命名它们。

打包DLL

以前,通过将Windows dll复制到源树中并设置 package_data.dlls 报关进口 setup.cfg .

源目录树中复制的DLL现在总是打包的 package_data.dlls 进入不再有效。如果不想包含DLL,请不要将它们复制到源树中。