我可以从自定义构建中省略哪些Python“核心模块”?

时间:2012-05-05 00:25:46

标签: python windows visual-c++ static-linking

我想修补Python源代码,以便将其静态链接到我的Windows应用程序中(我意识到这不容易甚至鼓励,因为核心模块特别是如何加载)。

我是否可以省略某些“核心模块”,尽管名称表明它们是必需的?

我在考虑_tkinter_sslssl(不是100%肯定我是否要移除那个),winsound和{{1这里(它只会在NT平台上使用)。这是否可能或将以微妙的方式打破事情?

NB:请,无需提及静态链接因某种原因而变坏。对于我需要它的情况,它将是迄今为止的优秀解决方案。

1 个答案:

答案 0 :(得分:2)

不确定你是否还需要这个答案,考虑到你多久以前提出这个问题,但我想我会留下一些我发现的信息,因为我想知道同样的事情:

注意:这是基于Python 2.7.3的源代码树

有一些python模块依赖于_ssl / ssl模块,但它们都有错误检查以支持没有SSL的Python版本,并且只会禁用该功能。

包含使用ssl模块的python模块是:

  • 插座
  • FTPLIB
  • httplib的
  • imaplib
  • poplib模块
  • 的smtplib
  • 的urllib
  • 的xmlrpclib

由于您将其嵌入到自己的应用中,我可能也会使用_msi。 (这将允许您删除msilib模块)

如果你继续删除你提到的扩展,你总是想从Lib文件夹中删除以下python模块:

  • LIB-TK
  • SSL
  • wave(我假设你不需要支持解析wave文件,因为你放弃了winsound)
  • sunau(^)
  • sunaudio(^)
  • audiodev(^)
  • aifc(^)
  • chunk(^)
  • toaiff(^)

我假设这是一个GUI应用程序,因此您可能不需要以下Python模块:

  • 诅咒
  • TTY
  • PTY
  • rlcompleter

不确定你的应用程序做了什么/做了什么,所以我对其余部分保守。

对于用C语言编写的内置模块,我无法保证100%无问题,但您应该能够删除以下某些内容,具体取决于您的应用程序实际需要的内容。

  • _csv
  • _json(虽然这个模块为python-only json模块提供了加速)
  • _hotshot(如果你不需要hotshot,这是一个日志记录分析器)
  • imageop

也可能是其他一些人。