尝试运行可执行 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 错误