Python 如何构建zlib.pyd?

Python 如何构建zlib.pyd?,python,zlib,cpython,Python,Zlib,Cpython,我有一个py2exe构建的程序失败了,因为它需要zlib.pyd的副本。我如何构建这个?我可以从源代码创建zlib.dll(或.lib),我可以从源代码编译Python,我使用过distutils、py2exe和pyinstaller,所以我对“景观”有很好的感觉,但我不确定如何直接生成这样的.pyd 更新: 我发现: 这似乎是Linux的答案,但这在Windows中不太适用,使用nmake…是否在标准安装的Python上运行py2exe?如果是这样的话,几乎可以肯定的是,您只想让py2exe

我有一个py2exe构建的程序失败了,因为它需要zlib.pyd的副本。我如何构建这个?我可以从源代码创建zlib.dll(或.lib),我可以从源代码编译Python,我使用过distutils、py2exe和pyinstaller,所以我对“景观”有很好的感觉,但我不确定如何直接生成这样的.pyd

更新:

我发现:


这似乎是Linux的答案,但这在Windows中不太适用,使用
nmake

是否在标准安装的Python上运行py2exe?如果是这样的话,几乎可以肯定的是,您只想让py2exe从stdlib中复制现有的
zlib.pyd
,而不是构建它的新副本。如果确实需要构建它的副本,假设您想从CPython源代码树中构建一个,那么IIRC只需要编辑
模块/Setup.local
,从
Modules/Setup
复制
zlib
部分,取消注释,然后您可以…我不知道Windows上的最后一步是什么(在*nix上,这是一个
make
命令…。谢谢@abarnert。我去看看。顺便说一句,没有zlib.pyd与Python的标准安装打包在一起。CPython也不自然地建造一个。这就是问题所在!我确实发现有一个旧的随机副本在网络上四处游荡,但当我尝试这样做时,它失败了,因为它想谈论一个旧版本的基本python.dll。因此,您是对的,需要进行版本匹配。在Windows上,文件似乎是Setup.dist。否则,这就是Python版本的差异。我在用v.2.7。注释中已经有一行zlibmodule。我取消了它的注释,运行了构建,一切都成功了,但是没有找到.pyd!我现在尝试使用distutil,直接从zlibmodule.c文件构建扩展名。我几乎可以做到这一点,但我遇到了链接器错误…
zlib
从1.5版开始就已经是Python stdlib的一部分了。如果没有
zlib.pyd
,则必须将其链接到解释器(在
python27.dll
中),在这种情况下,您不应该在py2exe应用程序中需要它。你能从Python中导入zlib吗?如果是这样,我认为你在试图解决错误的问题。