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

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

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

我如何知道哪些标准的Python库模块py2exe在默认情况下捆绑在EXE? (所以我知道我或其他人是否可以在插件中使用它们)。 py2exe文档没有给出提示,只是说它包含了很多来自标准库的模块。

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

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

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

至于为什么它不包括一切,或者它如何选择包括一些而不包括其他? 我的理解是,py2exe在你的代码中找出你正在使用的东西,包括那些(和一些它可能需要它本身),但也可能有一些启发式也添加其他模块(我没有检查:)