Python py2exe是否生成DLL?

Python py2exe是否生成DLL?,python,windows,dll,py2exe,Python,Windows,Dll,Py2exe,有没有办法使用py2exe或其他方法来生成dll文件而不是exe文件 我想基本上创建一个普通的Win32动态链接库,但这些函数将用Python编码而不是C++。 < P>我不知道代码> py2EXE< /Cord>能够做到这一点,因为我相信它实际上并没有从Python代码中创建对象符号。但只需将编译后的字节码嵌入Python运行时的可执行文件中即可 使用Python-CAPI创建本机库可能需要更多的工作(定义C/C++接口)。使用它可能会更容易一些。我怀疑py2exe是否能做到这一点,因为它的体

有没有办法使用py2exe或其他方法来生成dll文件而不是exe文件


<>我想基本上创建一个普通的Win32动态链接库,但这些函数将用Python编码而不是C++。

< P>我不知道代码> py2EXE< /Cord>能够做到这一点,因为我相信它实际上并没有从Python代码中创建对象符号。但只需将编译后的字节码嵌入Python运行时的可执行文件中即可


使用Python-CAPI创建本机库可能需要更多的工作(定义C/C++接口)。使用它可能会更容易一些。

我怀疑py2exe是否能做到这一点,因为它的体系结构是提供一个bootstrapping.exe来启动python解释器并运行它


但是为什么不将Python嵌入C代码中,并将代码编译为DLL呢?

我认为您可以通过进行一些黑客攻击来解决这个问题:

  • 看看py2exe中的zipextimporter模块。它有助于从zip导入pyd文件
  • 使用它,您可能能够使用原始python api将py2exe的输出文件加载到您自己的app/dll中。(如果可以并且愿意,请使用boost::python)
  • 而且,由于py2exe的outputfile是一个zip文件,您可以将它附加到dll的末尾,从而使整个过程更加集成。(同样适用于jar文件的老把戏。)
没有经过测试,但我认为这个理论是正确的


基本上,您可以在dll中重新实现py2exe的输出可执行文件的main()。

看起来可以从py2exe生成COM dll:


对于后人来说,我最近能够用它成功地生成一个可用的DLL。他们的网站。这非常酷,因为您可以动态更改python代码来更改DLL行为以进行调试

不幸的是,对我来说,我想要一个可以在不安装python的情况下工作的可移植DLL。那部分不是很好用。这里不是重复所有步骤,而是指向答案的链接,其中包含我采取的步骤:。
我确实必须将python27.dll、elmer.dll和几个.pyd与我的.dll一起分发;由于python27.dll通常不是静态链接的,因此还需要适当的.net运行时。可能有办法包括一大堆dll,但我不介意分发多个dll,所以我没有深入研究它。

py2exe有一个代码输出路径main()。您有没有想过如何使用纯python代码指定导出的函数/类?假设我做了类似的实用程序py2dllNo。我不认为不编写一些C语言就可以做到这一点。我想您应该像往常一样运行py2exe,并使用它的库输出,但编写您自己的dll,它导出一个“my_pymain”函数,该函数的功能类似于py2exe的可执行文件。您应该能够从py2exe中窃取该代码。tlb文件来自哪里?这部分我已经失去了。
  23     my_com_server_target = Target(
  24     description = "my com server",
  25     # use module name for ctypes.com dll server
  26     modules = ["dir.my_com_server"],
  27     # the following line embeds the typelib within the dll
  28     other_resources = [("TYPELIB", 1, open(r"dir\my_com_server.tlb", "rb").read())],
  29     # we only want the inproc (dll) server
  30     create_exe = False
  31     )