Re: using sip-wheel on MacOS
Phil Thompson <[email protected]> Tue, 28 Apr 2020 21:46:14 +0100
| Newsgroups | gmane.comp.python.pyqt-pykde |
|---|---|
| Message-ID | <[email protected]> |
On 28/04/2020 18:49, Steve Borho wrote: >> On Apr 28, 2020, at 3:58 AM, Phil Thompson >> <[email protected]> wrote: >> >> On 28/04/2020 04:55, Steve Borho wrote: >>> Hello, >>> On Linux and Windows I can use sip-wheel to build binary wheels that >>> will gladly use the Qt libraries packaged by PyQt5, by compiling >>> against the same local version of Qt. >>> But when I try this on Mac, it is linking in the full paths to the >>> local (homebrew) Qt libraries >>> $ otool -L foo.cpython-37m-darwin.so >>> foo.cpython-37m-darwin.so: >>> /usr/local/opt/qt/lib/QtPrintSupport.framework/Versions/5/QtPrintSupport >>> (compatibility version 5.14.0, current version 5.14.1) >>> /usr/local/opt/qt/lib/QtOpenGL.framework/Versions/5/QtOpenGL >>> (compatibility version 5.14.0, current version 5.14.1) >>> /usr/local/opt/qt/lib/QtWidgets.framework/Versions/5/QtWidgets >>> (compatibility version 5.14.0, current version 5.14.1) >>> /usr/local/opt/qt/lib/QtDataVisualization.framework/Versions/5/QtDataVisualization >>> (compatibility version 5.14.0, current version 5.14.1) >>> /usr/local/opt/qt/lib/QtGui.framework/Versions/5/QtGui >>> (compatibility >>> version 5.14.0, current version 5.14.1) >>> I see that sip-wheel has an option for: >>> --target-qt-dir DIR the Qt libraries will be found in DIR when the >>> wheel >>> is installed >>> but it is not clear how to target the PyQt5 packaged Qt libraries. >>> Has anyone else tackled this? Thanks >> >> Assuming you are going to package a Qt installation with your wheel >> using pyqt-bundle at a later stage then pass '--target-qt-dir Qt/lib'. >> >> This will be documented in the next release of the PyQt docs. > > Ideally the binaries in the wheel would use the Qt libraries in > ../PyQt5/Qt/lib/* from site-packages. > > Does my app need to package its own copy of the Qt libraries if it > compiles its own shared library? > > I just realized my Linux wheels have the same issue. They are not > using PyQt5/Qt/lib, they are relying on the Qt libraries being present > where they were compiled. I'm not sure what it is you are trying to achieve. The wheels on PyPI are created by running sip-wheel using the --target-qt-dir. The wheel is compiled against a local Qt installation but targeted for a bundled copy of Qt. That wheel, if installed, would not run. pyqt-bundle is then run to bundle a copy of that local Qt installation to create a new wheel (the one uploaded to PyPI). Phil