From your question you can presume that the structure of your project is as follows:
├── index.html
├── jquery.js
├── main.py
├── my_custom.js
└── styles.css
For your case there are 2 options:
-
using
--add-data
import os import sys from PyQt5 import QtCore, QtWidgets, QtWebEngineWidgets def resource_path(relative_path): """ Get absolute path to resource, works for dev and for PyInstaller """ try: # PyInstaller creates a temp folder and stores path in _MEIPASS base_path = sys._MEIPASS except Exception: base_path = os.path.abspath(".") return os.path.join(base_path, relative_path) if __name__ == "__main__": import sys app = QtWidgets.QApplication(sys.argv) view = QtWebEngineWidgets.QWebEngineView() filename = resource_path("index.html") url = QtCore.QUrl.fromLocalFile(filename) view.load(url) view.show() sys.exit(app.exec_())
If you want to add external resources to the executable then you must use the “–add-data” option:
pyinstaller --onefile --windowed --add-data="index.html:." --add-data="jquery.js:." --add-data="my_custom.js:." --add-data="styles.css:." main.py
For windows change “:” with “;”.
-
using
.qrc
With this method you will convert the files (.html, .css, .js, etc) into .py code using pyrcc5 for this you must follow the following steps:
2.1. Create a file called resource.qrc with the following content in the project folder:
<RCC> <qresource prefix="https://stackoverflow.com/"> <file>index.html</file> <file>jquery.js</file> <file>my_custom.js</file> <file>styles.css</file> </qresource> </RCC>
2.2 Convert it to .py using pyrcc5:
pyrcc5 resource.qrc -o resource_rc.py
2.3 Import the resource_rc.py file and use the url with schema “qrc” in the main.py file:
import os import sys from PyQt5 import QtCore, QtWidgets, QtWebEngineWidgets import resource_rc if __name__ == "__main__": import sys app = QtWidgets.QApplication(sys.argv) view = QtWebEngineWidgets.QWebEngineView() url = QtCore.QUrl("qrc:/index.html") view.load(url) view.show() sys.exit(app.exec_())
2.4 Compile the project using your initial command
pyinstaller --onefile --windowed main.py