Моя проблема связана с исполняемым файлом pyqt5, который я создал с помощью pyinstaller. Единственная команда, которую я использую:
pyinstaller script.py
Я не очень разбираюсь в выходных сообщениях Pyinstaller. Поэтому я публикую этот вопрос на тот случай, если кто-то другой может помочь мне выяснить, что такое отсутствующие модули или файлы.
Вот копия всего вывода Compile:
Github - выход Pyinstaller
Вот копия ошибки, которая появляется .. это происходит за миллисекунду:
Любые комментарии или помощь приветствуются. Если вы думаете, что у вас есть возможное решение, пожалуйста, попробуйте ответить. Я уверен, что это стоит посмотреть. Надеюсь, это что-то простое и из-за моего отсутствия знаний.
Еще одно замечание: я импортирую / использую модуль ibm_db и модуль оболочки ibm_db_dbi .
Вот копия моего спецификационного файла:
# -*- mode: python -*-
block_cipher = None
added_files = [
(r'C:\Python37\Lib\site-packages\ibm_db_dlls\ibm_db.dll', '.')
]
a = Analysis(['InheritMainWindow.py'],
pathex=['c:\\Python37\\PDFMaker_v3\\Prototype',
'C:\\Python37\\Lib\\site-packages\\',
'C:\\Python37\\Lib\\site-packages\\sqlalchemy\\connectors\\',
'C:\\Python37\\Lib\\site-packages\\clidriver\\',
'C:\\Python37\\Lib\\site-packages\\ibm_db_dlls',
'C:\\Python37\\Lib\\site-packages\\ibm_db.py'],
binaries=[('ibm_db.dll', 'ibm_db_dlls')],
datas=[],
hiddenimports=['ibm_db', 'ibm_db_dbi'],
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,
[],
exclude_binaries=True,
name='InheritMainWindow',
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=True,
console=True )
a.binaries = [x for x in a.binaries if os.path.dirname(x[1]).find("IBM") < 0]
coll = COLLECT(exe,
a.binaries,
a.zipfiles,
a.datas,
strip=False,
upx=True,
name='InheritMainWindow')
PS вы можете повторить проблему со следующим:
import ibm_db
print('hello!')
в командной строке:
pyinstaller hello.py
После выполнения exe-файла в папке dist вы получите ту же ошибку, что и выше.
Вот список вещей, которые я пытался решить:
1) Предоставление полного пути в двоичном виде, например:
binaries=[(r'C:\Python37\Lib\site-packages\ibm_db_dlls\ibm_db.dll', 'ibm_db_dlls')]
Это не имеет значения, сбой все еще происходит. И я уже видел, как папка ibm_db_dlls появилась в моей папке dist . Таким образом, двоичный файл добавляется, но его просто не видно.
2) С форума разработчиков ibm здесь:
https://developer.ibm.com/answers/questions/448999/python-3-db2-windows-10-problems-and-script-compil/
В качестве предложенного решения использовалась опция --clean. Я попробовал эту опцию в 'hello.py', где он только импортирует пакет ibm_db и фактически работает как exe. Но это решение не работает в моем основном проекте.
Исправление: Это НЕ работает даже на простом примере hello.py.
Окончательное обновление: я предоставил решение ниже!