由于 mpl_toolkits,cx_Freeze 无法冻结脚本

Posted

技术标签:

【中文标题】由于 mpl_toolkits,cx_Freeze 无法冻结脚本【英文标题】:cx_Freeze fails to freeze script due to mpl_toolkits 【发布时间】:2018-07-22 22:08:26 【问题描述】:

我正在尝试使用以下设置脚本冻结此program:

import cx_Freeze
import sys
import os

base = None

if sys.platform == 'win32':
    base = "Win32GUI"

executables = [cx_Freeze.Executable("Electric Field API.py", base=base, icon=os.getcwd()+"\\bin\\EFAPIicon.ico")]

cx_Freeze.setup(
    name = "Electric Field API",
    options = "build_exe": 'includes': ['numpy.core._methods','numpy.lib.format','tkFileDialog','FileDialog'], 'packages': ["matplotlib",'Tkinter','FileDialog','tkFileDialog'], "include_files":[os.getcwd()+"\\bin\\EFAPIicon.ico"],
    version = "1.3",
    description = "Electric Field Visualization",
    executables = executables
    )

不幸的是,运行此程序时,我收到以下错误:

当这些导入在 setup.py 文件中列出时,我从 powershell 收到以下错误:

如果有人有办法解决这个问题,将不胜感激。

【问题讨论】:

mpl_toolkits.mplot3dmpl_toolkits.axes_grid1 均未在 "packages" 中列出。 @ImportanceOfBeingErnest 添加其中任何一个都会导致上面显示的 powershell 出现错误。 【参考方案1】:

显然 mpl_toolkits 是一个命名空间包(没有“init”),因此必须区别对待。 (我在 bitbucket 上阅读了一些关于此的内容(感谢 D. Reaver)

尝试在选项中将以下内容添加到您的 build_exe:

'namespace_packages':['mpl_toolkits']

【讨论】:

以上是关于由于 mpl_toolkits,cx_Freeze 无法冻结脚本的主要内容,如果未能解决你的问题,请参考以下文章

python文件打包成exe文件,报错No module named mpl_toolkits.mplot3d

Google API 和 cx_Freeze 无法正常工作

Python 3 + pyQt5 + cx_freeze

使用 cx_Freeze 冻结成可执行文件后如何知道当前文件路径?

使用 cx_freeze 将 3 个 .py 文件组合成一个独立的应用程序?

如何修复由 cx_Freeze 转换为 exe 的 pygame 中的游戏?