exe by pyinstaller не может выдать образ pydotplus (graphviz) windows10 - PullRequest
1 голос
/ 25 марта 2020

Я пытаюсь создать исполняемый файл .exe с одним файлом с помощью программы установки py.

Исходный код позволяет создать таблицу и на основе данных из таблицы дерево строится с помощью pydotplus (который использует Graphviz)

Я создал виртуальную среду, есть все дополнительные пакеты установлены, и если я запускаю код из Anaconda Spyder, ошибок не возникает.

Но с помощью pyinstaller в результате нажатия кнопки создается пустое изображение. Так как у меня были некоторые проблемы с «без исполняемых файлов» Graphviz, которые я решил, добавив windows переменные окружения, как в этом ответ

Код можно найти через этот git ссылка

Во время компиляции я получил следующее

(gentree) c:\a_tree\app>pyinstaller --onefile frontend_multi_g.spec
126 INFO: PyInstaller: 3.6
127 INFO: Python: 3.8.1 (conda)
127 INFO: Platform: Windows-10-10.0.18362-SP0
131 INFO: UPX is not available.
132 INFO: Extending PYTHONPATH with paths
['c:\\a_tree\\app', 'c:\\a_tree\\app']
133 INFO: checking Analysis
196 INFO: Building because C:\a_tree\app\frontend_multi_g.py changed
196 INFO: Initializing module dependency graph...
208 INFO: Caching module graph hooks...
225 INFO: Analyzing base_library.zip ...
5037 INFO: Processing pre-find module path hook   distutils
5040 INFO: distutils: retargeting to non-venv dir 'C:\\Users\\Yury\\anaconda3\\envs\\gentree\\lib'
7887 INFO: Caching module dependency graph...
8144 INFO: running Analysis Analysis-00.toc
8157 INFO: Adding Microsoft.Windows.Common-Controls to dependent assemblies of final executable
  required by C:\Users\Yury\anaconda3\envs\gentree\python.exe
8714 INFO: Analyzing frontend_multi_g.py
10041 INFO: Processing pre-safe import module hook   setuptools.extern.six.moves
10736 INFO: Processing pre-find module path hook   site
10737 INFO: site: retargeting to fake-dir 'C:\\Users\\Yury\\anaconda3\\envs\\gentree\\lib\\site-packages\\PyInstaller\\fake-modules'
C:\Users\Yury\anaconda3\envs\gentree\lib\site-packages\traitlets\config\loader.py:795: SyntaxWarning: "is" with a literal. Did you mean "=="?
  if len(key) is 1:
C:\Users\Yury\anaconda3\envs\gentree\lib\site-packages\traitlets\config\loader.py:804: SyntaxWarning: "is" with a literal. Did you mean "=="?
  if len(key) is 1:
23371 INFO: Processing pre-safe import module hook   six.moves
27937 INFO: Analyzing hidden import 'graphviz'
28016 INFO: Analyzing hidden import 'nympy'
28018 ERROR: Hidden import 'nympy' not found
28019 INFO: Processing module hooks...
28024 INFO: Loading module hook "hook-distutils.py"...
28029 INFO: Loading module hook "hook-encodings.py"...
28156 INFO: Loading module hook "hook-IPython.py"...
28958 INFO: Excluding import 'tkinter'
28964 INFO:   Removing import of tkinter from module IPython.lib.clipboard
28968 INFO: Excluding import 'matplotlib'
28976 INFO:   Removing import of matplotlib from module IPython.core.pylabtools
28978 INFO: Excluding import 'PyQt5'
28992 INFO: Import to be excluded not found: 'gtk'
28993 INFO: Excluding import 'PyQt4'
29005 INFO: Import to be excluded not found: 'PySide'
29005 INFO: Loading module hook "hook-jedi.py"...
29248 INFO: Loading module hook "hook-lib2to3.py"...
29256 INFO: Loading module hook "hook-numpy.core.py"...
29661 INFO: MKL libraries found when importing numpy. Adding MKL to binaries
29669 INFO: Loading module hook "hook-numpy.py"...
29671 INFO: Loading module hook "hook-pandas.py"...
31237 INFO: Loading module hook "hook-PIL.Image.py"...
31805 INFO: Loading module hook "hook-PIL.py"...
31810 INFO: Import to be excluded not found: 'FixTk'
31810 INFO: Excluding import 'tkinter'
31817 INFO:   Removing import of tkinter from module PIL.ImageTk
31821 INFO: Import to be excluded not found: 'PySide'
31821 INFO: Excluding import 'PyQt4'
31829 INFO: Excluding import 'PyQt5'
31836 INFO: Loading module hook "hook-PIL.SpiderImagePlugin.py"...
31841 INFO: Import to be excluded not found: 'FixTk'
31841 INFO: Excluding import 'tkinter'
31847 INFO: Loading module hook "hook-pkg_resources.py"...
32362 INFO: Processing pre-safe import module hook   win32com
32717 INFO: Excluding import '__main__'
32720 INFO:   Removing import of __main__ from module pkg_resources
32722 INFO: Loading module hook "hook-pydoc.py"...
32726 INFO: Loading module hook "hook-pygments.py"...
35375 INFO: Loading module hook "hook-pythoncom.py"...
35763 INFO: Loading module hook "hook-pytz.py"...
35870 INFO: Loading module hook "hook-pywintypes.py"...
36268 INFO: Loading module hook "hook-setuptools.py"...
37130 INFO: Loading module hook "hook-sqlite3.py"...
37251 INFO: Loading module hook "hook-sysconfig.py"...
37254 INFO: Loading module hook "hook-win32com.py"...
C:\Users\Yury\anaconda3\envs\gentree\lib\site-packages\win32com\client\makepy.py:369: SyntaxWarning: "is not" with a literal. Did you mean "!="?
  if path is not '' and not os.path.exists(path):
37801 INFO: Loading module hook "hook-xml.dom.domreg.py"...
37803 INFO: Loading module hook "hook-xml.etree.cElementTree.py"...
37806 INFO: Loading module hook "hook-xml.py"...
37810 INFO: Loading module hook "hook-_tkinter.py"...
38029 INFO: checking Tree
38109 INFO: checking Tree
38262 INFO: Looking for ctypes DLLs
38466 INFO: Analyzing run-time hooks ...
38484 INFO: Including run-time hook 'pyi_rth_multiprocessing.py'
38494 INFO: Including run-time hook 'pyi_rth_pkgres.py'
38499 INFO: Including run-time hook 'pyi_rth_win32comgenpy.py'
38505 INFO: Including run-time hook 'pyi_rth_traitlets.py'
38510 INFO: Including run-time hook 'pyi_rth__tkinter.py'
38566 INFO: Looking for dynamic libraries
38775 WARNING: lib not found: impi.dll dependency of C:\Users\Yury\anaconda3\envs\gentree\Library\bin\mkl_blacs_intelmpi_ilp64.dll
38791 WARNING: lib not found: impi.dll dependency of C:\Users\Yury\anaconda3\envs\gentree\Library\bin\mkl_blacs_intelmpi_lp64.dll
38884 WARNING: lib not found: msmpi.dll dependency of C:\Users\Yury\anaconda3\envs\gentree\Library\bin\mkl_blacs_msmpi_ilp64.dll
39162 WARNING: lib not found: pgf90rtl.dll dependency of C:\Users\Yury\anaconda3\envs\gentree\Library\bin\mkl_pgi_thread.dll
39169 WARNING: lib not found: pgf90.dll dependency of C:\Users\Yury\anaconda3\envs\gentree\Library\bin\mkl_pgi_thread.dll
39174 WARNING: lib not found: pgc14.dll dependency of C:\Users\Yury\anaconda3\envs\gentree\Library\bin\mkl_pgi_thread.dll
39628 WARNING: lib not found: mpich2mpi.dll dependency of C:\Users\Yury\anaconda3\envs\gentree\Library\bin\mkl_blacs_mpich2_ilp64.dll
39698 WARNING: lib not found: mpich2mpi.dll dependency of C:\Users\Yury\anaconda3\envs\gentree\Library\bin\mkl_blacs_mpich2_lp64.dll
39747 WARNING: lib not found: msmpi.dll dependency of C:\Users\Yury\anaconda3\envs\gentree\Library\bin\mkl_blacs_msmpi_lp64.dll
41148 INFO: Looking for eggs
41148 INFO: Using Python library C:\Users\Yury\anaconda3\envs\gentree\python38.dll
41151 INFO: Found binding redirects:
[]
41184 INFO: Warnings written to c:\a_tree\app\build\frontend_multi_g\warn-frontend_multi_g.txt
41588 INFO: Graph cross-reference written to c:\a_tree\app\build\frontend_multi_g\xref-frontend_multi_g.html
41902 INFO: checking PYZ
41924 INFO: Building because toc changed
41926 INFO: Building PYZ (ZlibArchive) c:\a_tree\app\build\frontend_multi_g\PYZ-00.pyz
46476 INFO: Building PYZ (ZlibArchive) c:\a_tree\app\build\frontend_multi_g\PYZ-00.pyz completed successfully.
46544 INFO: checking PKG
46611 INFO: Building because toc changed
46612 INFO: Building PKG (CArchive) PKG-00.pkg
151558 INFO: Building PKG (CArchive) PKG-00.pkg completed successfully.
260218 INFO: Bootloader C:\Users\Yury\anaconda3\envs\gentree\lib\site-packages\PyInstaller\bootloader\Windows-64bit\runw.exe
260218 INFO: checking EXE
260302 INFO: Building because toc changed
260302 INFO: Building EXE from EXE-00.toc
260309 INFO: Appending archive to EXE c:\a_tree\app\dist\frontend_multi_g.exe
269532 INFO: Building EXE from EXE-00.toc completed successfully.

Spe c Файл имеет следующее содержание

# -*- mode: python ; coding: utf-8 -*-

block_cipher = None


a = Analysis(['frontend_multi_g.py'],
             pathex=['.'],
             binaries=[],
             datas=[],
             hiddenimports=['pandas', 'matplotlib', 'graphviz', 'tkinter', 'os', 'sys', 'nympy', 'pydotplus'],
             hookspath=[],
             runtime_hooks=[],
             excludes=[],
             win_no_prefer_redirects=False,
             win_private_assemblies=False,
             cipher=block_cipher,
             noarchive=False)
pyz = PYZ(a.pure, a.zipped_data,
             cipher=block_cipher)
exe = EXE(pyz,
          a.scripts,
          a.binaries,
          a.zipfiles,
          a.datas,
          [],
          name='frontend_multi_g',
          debug=False,
          bootloader_ignore_signals=False,
          strip=False,
          upx=True,
          upx_exclude=[],
          runtime_tmpdir=None,
          console=False )
...