.py 到 .exe 使用 cx_freeze 导致错误

Posted

技术标签:

【中文标题】.py 到 .exe 使用 cx_freeze 导致错误【英文标题】:.py to .exe using cx_freeze causes error 【发布时间】:2018-01-26 22:35:00 【问题描述】:

我正在尝试使用 cx_freeze 将 .py 文件转换为 .exe,并且在构建时我没有收到任何错误。我用另一个 .py 文件试了一下,效果很好,但这一次,它给了我这个错误:

Traceback (most recent call last):
  File "C:\Users\Tilen\AppData\Local\Programs\Python\Python36-32\lib\site-packages\cx_Freeze\initscripts\__startup__.py", line 14, in run
    module.run()
  File "C:\Users\Tilen\AppData\Local\Programs\Python\Python36-32\lib\site-packages\cx_Freeze\initscripts\Console.py", line 26, in run
    exec(code, m.__dict__)
  File "borzacommercial.py", line 6, in <module>
  File "C:\Users\Tilen\AppData\Local\Programs\Python\Python36-32\lib\site-packages\bcrypt\__init__.py", line 25, in <module>
    from bcrypt import _bcrypt
ModuleNotFoundError: No module named '_cffi_backend'

我该怎么办?

【问题讨论】:

我们可以看看你的安装脚本吗? from cx_Freeze import setup, Executable base = None executables = [Executable("borzacommercial.py", base=base)] packages = ["idna"] options = 'build_exe': 'packages':packages, , setup( name = "&lt;any name&gt;", options = options, version = "&lt;any number&gt;", description = '&lt;any description&gt;', executables = executables ) 尝试在包中包含_cffi_backend 谢谢,我将它导入到 .py 文件中,现在可以使用了。 我会做一个你可能决定接受的答案。 【参考方案1】:

当您收到一条消息说缺少某个包的一部分时,首先要做的是尝试添加缺少的包的名称。您可能会收到更多错误,说明缺少更多模块,但也只包含这些模块。您只需在 packages 选项中添加包的名称即可完成此操作。像这样:

from cx_Freeze import setup, Executable 

base = None executables = [Executable("borzacommercial.py", base=base)] 

packages = ["idna", "_cffi_backend"] 
options =  'build_exe':  'packages':packages, ,  

setup( name = "<any name>", options = options, version = "<any number>", 
description = '<any description>', executables = executables )

【讨论】:

【参考方案2】:

导入 _cffi_backend 解决了这个问题

【讨论】:

以上是关于.py 到 .exe 使用 cx_freeze 导致错误的主要内容,如果未能解决你的问题,请参考以下文章

在 Mac 上使用 cx_Freeze 从 .py 创建 .exe

使用 cx_Freeze 从 .py 构建一个 .exe 文件

将 .py 转换为 .exe 时出现 cx_Freeze 错误

为啥当我更改我在 python 中使用 cx_freeze 创建的 exe 中的 py 文件夹时它没有改变?

cx_Freeze 和移动文件

类型错误:列表索引必须是整数或切片,而不是 str 尝试使用 cx_Freeze 将 .py 文件转换为 .exe 时