Ошибка cx_Freeze: каталог базовых изображений не существует - PullRequest
4 голосов
/ 10 июля 2020

Я пытаюсь создать исполняемый файл из python скриптов на Windows в виртуальной среде Anaconda с библиотекой cx_Freeze. Пытался сделать это с версией 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 matpolotlib, pip install matplotlib), но ничего не изменилось.

Ответы [ 3 ]

4 голосов
/ 11 июля 2020

Мой исходный ответ: 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

Если у вас есть "excludes" в файле setup.py, добавьте в него два исключенных модуля, параметры в настройке являются исключительными.

1 голос
/ 10 июля 2020

При понижении cx_freeze версии 6.2 до 6.1 это сообщение об ошибке go исчезло. Теперь у меня другая ошибка при запуске исполняемого файла: нет модуля с именем mpl_toolkits.

Я отредактирую свой ответ, когда узнаю больше. Я просто хотел ответить сразу, так что вы знаете, что у кого-то такая же проблема. :)

0 голосов
/ 10 июля 2020

Скачивание на cx_freeze 6.1 у меня сработало спасибо! если нет модуля с именем mpl_toolkits error, вам нужно указать cx_freeze, где найти mpl_toolkits. Это можно сделать с помощью site.getsitepackages () [1] + '/ mpl_toolkits', возможно, вам придется использовать site.getusersitepackages (), если не по пути. Например:

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