【问题标题】:Understanding the fix for the known bug: cx_Freeze & Python 3.7了解已知错误的修复:cx_Freeze & Python 3.7
【发布时间】:2019-07-17 10:57:56
【问题描述】:

我一直在尝试基于 python 3 脚本(版本 3.7)为 Mac OSX 创建一个独立的 GUI 应用程序。 .py 脚本在直接从终端启动时可以完美运行。不过这是给我父亲在下载 .jpg 时需要帮助的,所以他需要一个简单的双击应用程序。

不幸的是,我尝试使用的所有工具似乎都知道我正在使用的模块存在错误 (py2App = openpyxl / pyinstaller = tkinter)。我现在尝试使用的是 cx_Freeze。

然而,在 Python 3.7 中描述了一个已知的错误

我一直在尝试在我的 mac OSX 机器上解决此问题,但找不到所引用的文件(在 this GIT-hub 上,上面第一篇文章链接的代码)。

我想修复这个错误,但我也想了解为什么会发生这种情况,以增加我对 python 和创建独立应用程序的了解。

不幸的是,我还不足以理解如何通过阅读 GIT-hub 帖子来修复它(因为它们被定向到 Windows 系统并且我没有找到文件),也不知道为什么会出现这个错误。

提前感谢您的帮助。

有关信息,这里是启动创建的可执行文件时终端输出的副本:

/Users/USER_NAME/Desktop/Python/DAD_PROJECT/build/exe.macosx-10.9-x86_64-3.7/PROJECT_NAME ; exit;
MacBook-Pro-de-USER_NAME:~ USER_NAME$ /Users/USER_NAME/Desktop/Python/DAD_PROJECT/build/exe.macosx-10.9-x86_64-3.7/PROJECT_NAME ; exit;
Fatal Python error: initfsencoding: unable to load the file system codec
ImportError: invalid flags 1545637508 in 'encodings'

Current thread 0x00007fff98191380 (most recent call first):
Abort trap: 6
logout
Saving session...
...copying shared history...
...saving history...truncating history files...
...completed.

[Opération terminée]

编辑我的 setup.py 文件:

请注意,这是在我的 Mac 上使用 cxfreeze-quickstart 自动生成的,正如 cx-freeze.readthedocs 上所建议的那样

from cx_Freeze import setup, Executable

# Dependencies are automatically detected, but it might need
# fine tuning.
buildOptions = dict(packages = [], excludes = [])

import sys
base = 'Win32GUI' if sys.platform=='win32' else None

executables = [
    Executable('PROJECT_NAME.py', base=base, targetName = 'PROJECT_NAME')
]

setup(name='PROJECT_NAME',
      version = 'DAD_PROJECT',
      description = 'Project for my dad',
      options = dict(build_exe = buildOptions),
      executables = executables)

【问题讨论】:

    标签: python python-3.x cx-freeze python-standalone


    【解决方案1】:

    要找到您需要修改的freezer.py 文件的路径,请在 Python 控制台中运行以下命令:

    from cx_Freeze import freezer
    print(freezer.__file__)
    

    然后根据cx_Freeze仓库的this commit修改这个文件,即去掉-注释的红线,添加+注释的绿线。

    【讨论】:

    • @Nootaku 要使用cx_Freeze 5.1.1(当前版本)冻结基于tkinter 的应用程序,您需要在自动生成的setup.py 中添加一些内容张贴。有关工作示例,请参阅 this answer
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-03
    • 2019-12-18
    • 1970-01-01
    • 1970-01-01
    • 2021-11-18
    • 1970-01-01
    相关资源
    最近更新 更多