У меня есть простое приложение, в котором я пытаюсь объединить его в исполняемый файл. У меня возникают проблемы, когда я добавляю путь к моей таблице стилей .qss в файл .spec, но это вызывает ошибку, когда я пытаюсь запустить exe из каталога bin. Я получаю ошибку:
Exception:[Errno 2] No such file or directory: 'FrontEnd\\Styles\\App.qss'
Это запустится, если я помещу исполняемый файл в базовую директорию проекта, но не куда-либо еще, хотя я использую флаг --onefile. У меня есть другие файлы, которые я положил в файл .spec, и они правильно подобраны. Но это похоже на проблему с .qss.
Jernel.spec
# -*- mode: python -*-
block_cipher = None
app_resources = [("FrontEnd/Styles/App.qss", "FrontEnd/Styles/"),
("Assets/Icons/*.png", "Assets/Icons/")]
a = Analysis(['Jernel.py'],
pathex=
['C:\\Users\\Fidel\\Dropbox\\Create\\CProjects\\MyProjects\\Jernel'],
binaries=[],
datas=app_resources,
hiddenimports=[],
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='Jernel',
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=True,
runtime_tmpdir=None,
console=True,
icon='C:\\Users\\Fidel\\Dropbox\\Create\\CProjects\\MyProjects\\Jernel\\Assets\\Icons\\Windows\\AppIcon.ico')
Jernel.py
import sys
import ctypes
import pathlib
from FrontEnd import QMainWindow, QApplication, Qt, QDockWidget,
QGridLayout, QDockWidget, QIcon, QSize, QLabel
from BackEnd import Navigator
class Jernel(QMainWindow):
def __init__(self, parent = None):
super().__init__(parent)
self.stack = Navigator()
self.setWindowFeatures()
self.setWindowContent()
self.setAppIcons()
self.setMenuBar()
self.show()
def setWindowFeatures(self):
self.setGeometry(1280, 1280, 1280, 1280)
self.setWindowFlags(Qt.FramelessWindowHint)
def setAppIcons(self):
print("Adding Icons")
appIcon = QIcon()
sizes = [512, 256, 48, 32, 24, 16]
for size in sizes:
appIcon.addFile(str(pathlib.Path("Assets/Icons/AppIcon.png")),
QSize(size, size))
self.setWindowIcon(appIcon)
print("Finished")
def setMenuBar(self):
self.menuDock = QDockWidget()
def setWindowContent(self):
self.setCentralWidget(self.stack)
if __name__ == '__main__':
try:
jernelApp = QApplication(sys.argv)
jernelApp.setApplicationName("Jernel")
jernelApp.setApplicationDisplayName("Jernel")
jernelApp.setApplicationVersion("1.0.0")
if sys.platform == "win32":
jernelAppID = "FiddyTT.GuiApp.1.0.0"
ctypes.windll.shell32.SetCurrentProcessExplicitAppUserModelID(jernelAppID)
window = Jernel()
with open(str(pathlib.Path("FrontEnd/Styles/App.qss")), "r") as stylesSheet:
window.setStyleSheet(stylesSheet.read())
jernelApp.exec_()
except Exception as exe:
print("Exception:{}".format(exe))
finally:
check = input()
Значки не вызывают исключение, когда загружаются только таблицы sytleSheet. Заранее благодарю за любую помощь.