由于 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.mplot3d
和 mpl_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
使用 cx_Freeze 冻结成可执行文件后如何知道当前文件路径?