py2exe:为什么不包含一些标准模块?

时间:2011-05-21 21:42:03

标签: python windows py2exe

我的python程序使用插件(python文件),我使用__import__动态导入。 我使用py2exe将我的python程序捆绑到Windows exe中。

我只花了2个小时搜索为什么我的插件python文件无法从.exe版本正确加载。我得到了一个ImportError:“没有名为urllib2的模块” 看来我的插件正在使用urllib2(通过import urllib2语句),并且标准库模块显然没有捆绑到exe中。插件中使用的其他模块(reurllib,...)没有问题,但也许它们已经是我在程序中静态包含的python文件中的引用。

我怎么知道默认情况下哪个标准Python库模块py2exe捆绑在exe?(所以我知道我或其他人是否可以在插件中使用它们)。 py2exe文档没有给出提示,除了saying它包含了标准库中的许多模块。

1 个答案:

答案 0 :(得分:4)

要查看包含哪些模块,请查看library.zip内部(如果没有library.zip文件 - 然后尝试在任何ZIP应用程序中打开EXE - 或者将其重命名为.ZIP并尝试打开它。)

您将能够看到* .pyc列表。您可以查看文件和目录列表,以了解是否包含哪些模块。

如果您需要添加特定包,请将其添加到“包”列表中。

至于为什么它不包括一切或如何选择包括一些而不包括其他人?我的理解是py2exe在你的代码中查找你正在使用的内容并包括那些(以及它可能需要它们的一些)但也许它也有一些启发式来添加其他模块(我没有检查过)