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

Posted

技术标签:

【中文标题】尝试运行可执行 Python 脚本时出现致命的 Python 错误【英文标题】:Fatal Python error when trying to run an executable Python script 【发布时间】:2015-04-24 18:57:03 【问题描述】:

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

这是我的简单 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 文件。 这在另一个名为 exe.win32-3.4 的文件夹中创建了另一个名为 build 的文件夹。在那个文件夹中,我找到了我的可执行文件、一堆.pyd 文件、一个.dll 文件和一个名为library 的压缩档案,其中包括一堆.pyc 文件。

如果我使用库 zip 存档从 exe.win32-3.4 中运行可执行文件,它执行得很好。但是,如果没有 .pyc 文件的库存档(基本上,如果我尝试自己运行 .exe,这是我应该能够做的),可执行文件会抛出此错误:

Fatal Python error: cannot get zipimpirter instance

Current thread 0x000001b48 (most recet call first):

我在网络上进行了一些初步搜索,以寻找该问题的潜在解决方案,但找不到任何实质性的东西。如果有人知道如何解决此问题,将不胜感激。

【问题讨论】:

exe 需要构建文件夹中的其他文件。 cx_Freeze 不支持制作单个文件 exe。如果您需要这样做,请参阅this FAQ entry。 谢谢Thomas,那个链接正是我要找的!......可惜我开始在python 3.4中做所有事情,因为你不能使用那个版本的py2exe......N我知道我已经运行了我假设的单个 python 可执行文件是使用 py2exe 而不是 cx-freeze 创建的... 【参考方案1】:

来自the docs:

单文件可执行文件

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

有关使用 py2exe 等的单文件解决方案,请参阅this question。

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

【讨论】:

以上是关于尝试运行可执行 Python 脚本时出现致命的 Python 错误的主要内容,如果未能解决你的问题,请参考以下文章

为啥在尝试运行此可执行文件时出现错误?

尝试在 OS X El Capitan 上安装 PyCrypto 时出现致命错误

Telnet:当我在 localhost 上运行 python 脚本时出现“连接被拒绝”

使用动态版本的 Python 执行嵌入的 Python 代码时出现致命的 Python 错误

SQLSRV 致命错误:翻译 Unicode 时出现严重错误

尝试运行并构建到 iPhone 模拟器时出现 Flutter Xcode 致命错误