【问题标题】:Which Python "core modules" can I leave out from a custom build?我可以从自定义构建中省略哪些 Python“核心模块”?
【发布时间】:2012-05-05 00:25:46
【问题描述】:

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

尽管名称暗示它们是必需的,但我可以省略某些“核心模块”吗?

我正在考虑 _tkinter_sslssl(还不能 100% 确定我是否要删除那个)、winsoundw9xpopen(它只会用于NT 平台)在这里。这是可能的还是会以微妙的方式破坏事情?

注意:请不要说静态链接出于某种原因是不好的。对于我需要它的情况,这将是迄今为止最好的解决方案。

【问题讨论】:

  • 为什么不使用 Ironpython?我有一个项目,我们有运行一些计算和结果对象的 python 脚本,这些对象传递回 C#
  • @Sharun: 简单,因为我不使用 C# ;)
  • 我看到了 Windows 应用程序并假设是 .NET。如果它是 CLR 而不是 win32,您应该能够将 C++ 与 IronPython 一起使用
  • 也不是 CLR ...而且我不确定静态链接如何与基于 CLR 的语言一起使用。

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


【解决方案1】:

不知道你是否仍然需要这个答案,因为你问了这个问题多久了,但我想我会留下一些我发现的信息,因为我想知道同样的事情:

注意:这是基于 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)
  • 苏瑙(^)
  • sunaudio (^)
  • 音频设备 (^)
  • aifc (^)
  • 块 (^)
  • toaiff (^)

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

  • 诅咒
  • tty
  • pty
  • rlcompleter

不过,不确定您的应用做了什么/做了什么,所以我会保守其他的。

至于用 C 编写的内置模块,我不能保证它 100% 没有问题,但您应该能够删除以下一些内容,具体取决于您的应用程序实际需要什么。

  • _csv
  • _json(尽管这个模块为仅 python 的 json 模块提供加速)
  • _hotshot(如果你不需要hotshot,它是一个日志分析器)
  • 图像操作

这里可能还有其他人。

【讨论】:

  • 非常感谢您的广泛回答。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多