Howdy forum,

I've built an app with PySide2, Python 3.7.9, and the Qt.py shim, that I'd 
like to now package into an executable.  

To satisfy the PySide2 LGPL terms, I need to package my app in a way that 
allows the user to substitute the included PySide2 library with their own.  
I would prefer to be able to package all of the other components into an 
executable, and then have a subfolder containing the PySide2-related files.

Could anyone describe a quick approach to do this?  In the process of 
trying this out, I created this minimum example:

*import sys*
*import os*

*from Qt import (QtWidgets, __binding__, __binding_version__, 
__qt_version__, __version__)*

*def window():*
*    app = QtWidgets.QApplication(sys.argv)*
*    w = QtWidgets.QWidget()*
*    b = QtWidgets.QLabel(w)*
*    b.setText("Hello World!")*
*    w.setGeometry(100, 100, 200, 200)*
*    b.move(50, 20)*
*    w.setWindowTitle("PyQt")*
*    w.show()*
*    sys.exit(app.exec_())*

*if __name__ == '__main__':*
*    print("__binding__:" + __binding__)*
*    print("__binding_version__:" + __binding_version__)*
*    print("__qt_version__:" + __qt_version__)*
*    print("__version__:" + __version__)*

*    window()*

When run from the terminal, this works great, and I see the little Hello 
World MainWindow.

My HelloQt.spec file is as follows:


































*# -*- mode: python ; coding: utf-8 -*-block_cipher = Nonea = 
Analysis(['helloQt.py', 'helloQT.spec'],             pathex=[],            
 binaries=[],             datas=[],             hiddenimports=['Qt.py'],    
         hookspath=[],             hooksconfig={},            
 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='helloQt',          debug=False,          
bootloader_ignore_signals=False,          strip=False,          upx=True,  
        console=False,          disable_windowed_traceback=False,          
target_arch=None,          codesign_identity=None,          
entitlements_file=None )*








*coll = COLLECT(exe,               a.binaries,               a.zipfiles,    
           a.datas,                strip=False,               upx=True,    
           upx_exclude=[],               name='helloQt')*

I run with the following:
*pyinstaller -F helloQt.py helloQT.spec --windowed*

But I get the following error in the GUI:








*Traceback (most recent call last):  File "helloQt.py", line 6, in 
<module>  File "<frozen importlib._bootstrap>", line 983, in 
_find_and_load  File "<frozen importlib._bootstrap>", line 967, in 
_find_and_load_unlocked  File "<frozen importlib._bootstrap>", line 677, in 
_load_unlocked  File "PyInstaller\loader\pyimod03_importers.py", line 495, 
in exec_module  File "Qt.py", line 1928, in <module>  File "Qt.py", line 
1906, in _installAttributeError: module 'Qt' has no attribute 'QtGui'*

Does anybody have some feedback on the AttributeError in the compiled 
executable, and then feedback on the process to make a single executable 
with the user-replaceable PySide2 library?

Much appreciated!
Jim

-- 
You received this message because you are subscribed to the Google Groups 
"PyInstaller" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/pyinstaller/9178bb98-a85b-40bb-b12c-18b0d06ca530n%40googlegroups.com.

Reply via email to