2017-02-06 10 views
0

Я пытаюсь заморозить консольную программу, которая использует matplotlib.pyplot для создания и сохранения графиков. (Мне не нужно, чтобы просмотреть или просмотреть графики в любом случае, прежде чем они будут сохранены.) Вот мой setup.py скрипт:Проблема с matplotlib и cx_freeze

from cx_Freeze import setup, Executable 
import os 

os.environ['TCL_LIBRARY'] = "C:\\Program Files\\Anaconda3\\tcl\\tcl8.6" 
os.environ['TK_LIBRARY'] = "C:\\Program Files\\Anaconda3\\tcl\\tk8.6" 

setup(name='FLOUResence.exe', 
    version='0.1', 
    options = {"build_exe": {"packages":["pandas", "numpy", "scipy", "matplotlib"]} 
      }, 
executables = [Executable(script='caller.py', targetName='FLOUResence.exe', 
icon="icon.ico", base='Console')] 
) 

я могу скомпилировать программу, но при запуске модуля построения графиков она возвращает следующее сообщение об ошибке:

This application failed to start because it could not find or load the Qt platform plugin "windows" in "".
Reinstalling the application may fix this problem.

Из того, что я могу сказать, потому что Matplotlib хочет загрузить/использовать Qt GUI, а потому, что это cx_freeze консольное приложение не загружается Qt? Является ли это правильной интерпретацией проблемы? Любые мысли о том, как решить эту проблему?

ответ

1

Вам нужно добавить плагины платформы Qt в свой каталог распространения. Попробуйте и скопируйте Library\plugins\platforms из установки PyQt в каталог package/dist. Если это сработает для вас, вы можете добавить каталог в свой вариант сборки include_files. Я использую miniconda, поэтому каталог платформ находится в c:\miniconda\Library\plugins.

setup(name='FLOUResence.exe', 
    version='0.1', 
    options = { 
     "build_exe": {"packages":["pandas", "numpy", "scipy", "matplotlib"], 
         "include_files": [r'c:\miniconda\Library\plugins\platforms']} 
    }, 
    executables = [Executable(script='caller.py', targetName='FLOUResence.exe', 
        icon="icon.ico", base='Console')] 
)