为什么Windows上的Cython扩展依赖于pythonXX.dll而不依赖于MacOSX?

为什么Windows上的Cython扩展依赖于pythonXX.dll而不依赖于MacOSX?,python,windows,macos,dll,cython,Python,Windows,Macos,Dll,Cython,我在windows和mac上构建了相同的库(下面的示例来自rfoo),mac版本只有系统依赖项 $ otool -L marsh.so marsh.so: /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1213.0.0) 而在windows上,它依赖于python的dll >dumpbin /dependents marsh.pyd Microsoft (R) COFF/PE D

我在windows和mac上构建了相同的库(下面的示例来自rfoo),mac版本只有系统依赖项

$ otool -L marsh.so 
marsh.so:
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1213.0.0)
而在windows上,它依赖于python的dll

>dumpbin /dependents marsh.pyd
Microsoft (R) COFF/PE Dumper Version 12.00.31101.0
Copyright (C) Microsoft Corporation.  All rights reserved.


Dump of file marsh.pyd

File Type: DLL

  Image has the following dependencies:

    python25.dll
    MSVCR120.dll
    KERNEL32.dll
我想知道这是不是一个真正由windows决定的实现选择,或者是否有特定于windows的东西需要这样做


上下文:我使用它从Ableton Live中的嵌入式解释器中加载python扩展,Ableton Live使用旧的python版本;但最糟糕的是python不是作为库加载的,而是在软件内部静态链接的。在mac上,这不是问题,我仍然可以加载扩展。在windows上,我不能,因为我必须链接到python25.dll,但在加载时它会尝试再次初始化解释器,这会给出一个错误,因为Ableton Live不使用该dll。我想知道是否有希望让它在windows上工作。

OS X上有DLL,与windows相反,大多数OS X应用程序是静态链接的,更大,但外部依赖性更少。

OS X上有DLL,与windows相反,大多数OS X应用程序是静态链接的,更大,但外部依赖性更少。

Windows不会将全局符号合并到公共命名空间中。模块(DLL)必须显式导出和导入符号。嵌入式Python是否包含
\u ctypes
扩展模块?否则,您可以使用RPC对另一个进程执行某些操作。谢谢,这就是原因。我曾考虑过ctypes,但它也附带了一个dll(更确切地说是一个pyd),而且它已经被剥离了。长话短说,我最关键的功能依赖于zeromq,如果我想要可移植性,它似乎不再是一个选项(有一个“纯python”替代方案,但它最终依赖于作为二进制文件的pywin32)。我在他们的测试版网站上提出了一个问题,但我没有太多希望。我目前正在使用asyncore重新实现网络部分,虽然不是很好,但可用且可行。Windows没有将全局符号合并到公共名称空间中。模块(DLL)必须显式导出和导入符号。嵌入式Python是否包含
\u ctypes
扩展模块?否则,您可以使用RPC对另一个进程执行某些操作。谢谢,这就是原因。我曾考虑过ctypes,但它也附带了一个dll(更确切地说是一个pyd),而且它已经被剥离了。长话短说,我最关键的功能依赖于zeromq,如果我想要可移植性,它似乎不再是一个选项(有一个“纯python”替代方案,但它最终依赖于作为二进制文件的pywin32)。我在他们的测试版网站上提出了一个问题,但我没有太多希望。我目前正在使用asyncore重新实现网络部分,虽然不是很好,但是可用且可行。实际上,第一条评论是正确的答案。我不会判断这句话是真是假,只是没有关系。事实上,第一句话就是正确的答案。不会判断这句话是真是假,只是无关。