尝试运行可执行Python脚本时出现致命的Python错误

3

我有一个Python脚本,使用cx-freeze-4.3.4.win32-py3.4将其转换为可执行文件。我在一台安装了Python 3.4Windows 7 64位机器上进行操作。

这是我的简单setup.py文件:

from cx_Freeze import setup, Executable

setup( name = "myfilename" , 
       version = "0.1" , 
       description = "This is my file" , 
       executables = [Executable("myfilename.py")] , )

我在C:\Python34文件夹中的命令提示符下运行了python setup.py build,同时使用了我要转换的脚本和setup.py文件。

这将在其中创建了另一个文件夹,名为build,其中是exe.win32-3.4文件夹。在那个文件夹里,我找到了我的可执行文件、一堆.pyd文件、一个单独的.dll文件以及一个被称为库library的压缩存档,其中包含许多.pyc文件。

如果我从exe.win32-3.4中运行带有库zip存档的可执行文件,则它可以正常执行。然而,如果没有.pyc文件的库存档(基本上,如果我只尝试运行.exe本身,那就是我应该能做到的),那么可执行文件将抛出此错误:

Fatal Python error: cannot get zipimpirter instance

Current thread 0x000001b48 (most recet call first):

我在网上进行了一些初步搜索,寻找解决这个问题的可能方法,但没有找到任何实质性的内容。如果有人知道如何解决这个问题,那将不胜感激。


exe 需要您构建文件夹中的其他文件。cx_Freeze 不支持制作单个文件 exe。如果您需要这样做,请参阅此 FAQ 条目 - Thomas K
谢谢Thomas,那个链接正是我在寻找的!可惜我已经开始使用Python 3.4做所有事情了,因为你不能在这个版本中使用py2exe...我知道我运行了一个单独的Python可执行文件,我假设它是使用py2exe而不是cx-freeze创建的... - BK435
1个回答

1

来自文档:

单文件可执行程序

cx_Freeze不支持构建单文件exe,即将应用程序的所有库嵌入一个可执行文件中。

有关使用py2exe和其他工具进行单文件解决方案,请参见此问题

在3.5中还有new zipapp模块,尽管基本功能已经存在一段时间。


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