cx_Freeze 错误:基线图像目录不存在

Posted

技术标签:

【中文标题】cx_Freeze 错误:基线图像目录不存在【英文标题】:cx_Freeze error: baseline image directory does not exist 【发布时间】:2020-07-10 07:05:33 【问题描述】:

我正在尝试使用 cx_Freeze 库在 Anaconda 虚拟环境中的 Windows 上的 python 脚本中创建一个可执行文件。我试图用 6.1 版来做,但我陷入了错误Intel MKL FATAL ERROR: Cannot load mkl_intel_thread.dll。然后我将 cx_Freeze 升级到 6.2 版本,这是我运行 python setup.py build 时得到的输出:

running build
running build_exe
C:\Users\--\Anaconda3\lib\site-packages\cx_Freeze\finder.py:309: VisibleDeprecationWarning: zmq.eventloop.minitornado is deprecated in pyzmq 14.0 and will be removed.
    Install tornado itself to use zmq with the tornado IOLoop.

  deferredImports, namespace = namespace)
Using TensorFlow backend.
2020-07-10 08:51:47.876748: W tensorflow/stream_executor/platform/default/dso_loader.cc:55] Could not load dynamic library 'cudart64_100.dll'; dlerror: cudart64_100.dll not found
2020-07-10 08:51:47.885038: I tensorflow/stream_executor/cuda/cudart_stub.cc:29] Ignore above cudart dlerror if you do not have a GPU set up on your machine.
C:\Users\--\Anaconda3\lib\site-packages\IPython\html.py:14: ShimWarning: The IPython.html package has been deprecated since IPython 4.0. You should import from notebook instead. IPython.html.widgets has moved to ipywidgets.
  "IPython.html.widgets has moved to ipywidgets.", ShimWarning)
C:\Users\--\Anaconda3\lib\site-packages\IPython\kernel\__init__.py:13: ShimWarning: The IPython.kernel package has been deprecated since IPython 4.0.You should import from ipykernel or jupyter_client instead.
  "You should import from ipykernel or jupyter_client instead.", ShimWarning)
error: The baseline image directory does not exist. This is most likely because the test data is not installed. You may need to install matplotlib from source to get the test data.

以下是文件setup.py的内容:

from cx_Freeze import setup, Executable 
  
exe = Executable(script="mainDefectDetection.py",targetName="Test.exe")
setup(name = "try", version = "0.1", description = "", options = 'build_exe': 'include_files':["../../../../Anaconda3/Library/bin/mkl_intel_thread.dll"],executables = [exe])

我尝试重新安装 matplotlib(pip uninstall matpolotlibpip install matplotlib),但没有任何改变。

【问题讨论】:

【参考方案1】:

我原来的答案:https://github.com/marcelotduarte/cx_Freeze/issues/692#issuecomment-657125847

我已经确定了这个问题的根源,是补丁7ec3eaa。

使用 matplot 示例,我发现 numpy 1.18.3 到 1.19 和枕头 7.x 存在问题,我正在调查。

目前,它有一个解决方法。

pip install "numpy<1.18.3" "pillow<7"

要构建添加 ["matplotlib.tests", "numpy.random._examples"] 以排除或构建:

python setup.py build_exe --excludes=matplotlib.tests,numpy.random._examples

如果您的 setup.py 中有“排除”,请将两个排除的模块添加到其中,设置中的选项是独占的。

【讨论】:

【参考方案2】:

将 cx_freeze 从版本 6.2 降级到 6.1 使此错误消息消失。现在运行可执行文件时出现另一个错误:没有名为 mpl_toolkits 的模块。

当我知道更多时,我会编辑我的答案。我只是想马上回答,所以你知道其他人也有同样的问题。 :)

【讨论】:

在你的 build_exe_options 中添加 mpl_toolkit 作为命名空间包 - 'namespace_packages':['mpl_toolkits']【参考方案3】:

下载到 cx_freeze 6.1 对我有用,谢谢! 对于没有名为 mpl_toolkits 的模块错误,您需要告诉 cx_freeze 在哪里可以找到 mpl_toolkits。这可以使用 site.getsitepackages()[1] + '/mpl_toolkits' 来完成,如果不在路径上,您可能必须使用 site.getusersitepackages()。例如:

    build_exe_options = "include_files": [(site.getsitepackages()[1] + '/mpl_toolkits', "mpl_toolkits")]

【讨论】:

以上是关于cx_Freeze 错误:基线图像目录不存在的主要内容,如果未能解决你的问题,请参考以下文章

cx_freeze 的 exe 错误

当图像已上传到文件夹中时,如何解决 laravel 中的“文件不存在或不可读”

使用 cx_Freeze 冻结时不显示主窗口图标

从画廊或相机上传图像到rest api(错误:状态:错误,消息:用户不存在!,数据:空)

R Markdown:openBinaryFile:不存在(没有这样的文件或目录)

使用 getData() 从 Firebase 存储下载 jpeg 图像时出现错误 13010“对象不存在”