py2exe:为什么有些标准模块没有被包含?

3
我的Python程序使用插件(Python文件),我使用__import__动态导入它们。我使用py2exe将我的Python程序打包成Windows可执行文件。
我刚花了两个小时搜索为什么我的插件Python文件无法从.exe版本正确加载。我得到了一个ImportError:“没有名为urllib2的模块”。看起来我的插件正在使用urllib2(通过import urllib2语句),而该标准库模块显然没有被打包到exe中。插件中使用的其他模块(reurllib,...)没有问题,但可能是因为它们已经在我静态包含在程序中的Python文件中引用了。 我如何知道py2exe默认在exe中捆绑哪些标准Python库模块? (这样我就知道自己或其他人可以在插件中使用它们)。 py2exe文档没有给出任何提示,除了它包括许多标准库模块。
1个回答

4
要查看包含哪些模块,请查看library.zip文件(如果没有library.zip文件-尝试在任何ZIP应用程序中打开EXE文件-或将其重命名为.ZIP并尝试打开)。
您将能够看到一个*.pyc列表。您可以查看文件和目录列表,以了解包含哪些模块或未包含哪些模块。
如果需要添加特定的软件包,请将其添加到“packages”列表中。
至于为什么它不包括所有内容或如何选择包括某些内容而不包括其他内容?我的理解是,py2exe会查找您的代码以确定您正在使用哪些内容,并包括这些内容(以及可能自己需要的一些内容),但也可能有一些启发式方法来添加其他模块(我还没有检查 :)

1
不错,我不知道exe是一个zip文件。 - Rabarberski

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接