Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

PySide missing from AppImage of version 1.6.5 #355

Closed
Sioma112233 opened this issue Oct 2, 2020 · 12 comments
Closed

PySide missing from AppImage of version 1.6.5 #355

Sioma112233 opened this issue Oct 2, 2020 · 12 comments

Comments

@Sioma112233
Copy link

Downloading and running the AppImage for the latest version (1.6.5) on fedora 32 results in an error:

Could not import GUI libraries. If you do not have PySide installed then you will need to install it for the GUI to work.

This is unexpected as it's an AppImage distribution which I expected to have all dependencies included.
Installing the library (PySide2) to my system python does not help.

I also extracted the AppImage and ran a python shell using the "embedded python" in ./usr/bin/python and could successfully import PySide2

@Sioma112233
Copy link
Author

I also found the module itself within the extract AppImage files under: conda/lib/python3.7/site-packages/PySide2

@Sioma112233
Copy link
Author

I've added a print of the exception just before this line

it printed:

cannot import name 'QtWidgets' from 'syncplay.vendor.Qt'

@daniel-123
Copy link
Contributor

I cannot replicate the issue (Debian 11) which is rather strange. I tried both official release of 1.6.5 and latest master for upcoming 1.6.6.

QtWidgets is part of PySide2, so I'm wondering what might be missing here. For the record I do have all the Qt libraries which Syncplay needs on my OS anyway as I normally use .deb installation.

That said - it seems like something that's specific either to Fedora 32 or even your system in particular. Otherwise I'd expect this to be reported way sooner. I'm not intimately familiar with our AppImage packaging process so I'm not quite certain how exactly it ensures all dependencies are packaged in. I know it uses requirements.txt and requirements_gui.txt, but those seem fine.

@albertosottile
Copy link
Member

I am also not able to reproduce on Ubuntu 18.04. Nevertheless, I think you are having an issue with Qt.py, the shim that we use to support both PySide and PySide2 at the same time.

I would try to get some logs from this shim by using an environment variable designed for that. @Sioma112233, could you please open a terminal, go where you downloaded the AppImage file, and run

chmod +x Syncplay-1.6.5-x86_64.AppImage
export QT_VERBOSE=True
./Syncplay-1.6.5-x86_64.AppImage

and report here all the terminal output?

Thanks.

@Sioma112233
Copy link
Author

and report here all the terminal output?

yeah, this new output appeared:

Order: 'PySide2', 'PySide', 'PyQt5', 'PyQt4'
Trying PySide2
Misplaced member has no source: QtGui.QStringListModel
Misplaced member has no source: QtCore.Property
Misplaced member has no source: QtCore.Signal
Misplaced member has no source: QtCore.Slot
Misplaced member has no source: QtCore.QAbstractProxyModel
Misplaced member has no source: QtCore.QSortFilterProxyModel
Misplaced member has no source: QtCore.QItemSelection
Misplaced member has no source: QtCore.QItemSelectionModel
Misplaced member has no source: QtCore.QItemSelectionRange
QtCompat: AttributeError: module 'syncplay.vendor.Qt' has no attribute '_QtWidgets'
QtCompat: AttributeError: module 'syncplay.vendor.Qt' has no attribute '_QtWidgets'
QtCompat: AttributeError: module 'syncplay.vendor.Qt' has no attribute '_QtWidgets'
QtCompat: AttributeError: module 'syncplay.vendor.Qt' has no attribute '_QtWidgets'
QtCompat: AttributeError: module 'syncplay.vendor.Qt' has no attribute '_QtWidgets'
QtCompat: AttributeError: module 'syncplay.vendor.Qt' has no attribute '_QtWidgets'
QtCompat: AttributeError: module 'syncplay.vendor.Qt' has no attribute '_QtWidgets'
QtCompat: AttributeError: module 'syncplay.vendor.Qt' has no attribute '_QtWidgets'
QtCompat: AttributeError: module 'syncplay.vendor.Qt' has no attribute '_QtWidgets'

@Sioma112233
Copy link
Author

Sioma112233 commented Oct 3, 2020

This issue seems to be related

Atleast for the first "error line" ("Misplaced member has no source: QtGui.QStringListModel")

@albertosottile
Copy link
Member

albertosottile commented Oct 3, 2020

The issue you linked does not match your log, which rather indicates that the AppImage was unable to import QtCore.

I installed a Fedora 32 VM to debug this issue. On Fedora 32, I can indeed reproduce. After mounting the AppImage and running the embedded Python interpreter, I got:

Python 3.7.7 (default, May  7 2020, 21:25:33) 
[GCC 7.3.0] :: Anaconda, Inc. on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from PySide2 import QtCore
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: /lib64/libk5crypto.so.3: undefined symbol: EVP_KDF_ctrl, version OPENSSL_1_1_1b

A quick search revealed this is a known issue with PySide2 and conda on Fedora: https://bugreports.qt.io/browse/PYSIDE-1357?gerritReviewStatus=All

Since we depend on conda for packaging the AppImage and since the PySide2 team already stated they cannot/would not fix this bug, I would advise you to open a new issue in the corresponding conda-forge repository: https://github.com/conda-forge/pyside2-feedstock , describing your problem and, perhaps, linking to this comment.

As a workaround, I would suggest to install Syncplay via snap, which is possible with some care. After that, though, I encountered issues in running both mpv and VLC, so, I stopped playing with this setup. If you are still interested in this route, I can try to provide more support about the Syncplay side, but I would advise you to report any encountered problems with the media players to their issue trackers.

@Sioma112233
Copy link
Author

At the meantime I use an older version (1.6.4a) which works fine (didn't encounter any problems yet when connecting with friends that are running 1.6.5).

ImportError: /lib64/libk5crypto.so.3: undefined symbol: EVP_KDF_ctrl, version OPENSSL_1_1_1b

Yeah I had this error after trying to manually update Qt.py with the latest release

Thanks for your time, I'll open an issue the the relevant party

@Sioma112233
Copy link
Author

@albertosottile If I understand correctly the issue is with the conda packaging of PySide2 right? They should include libk5crypto.so binary and not depended on the system-installed version

@albertosottile
Copy link
Member

albertosottile commented Oct 3, 2020

Yes the issue is in how conda is packaging PySide2, but I am not sure about the solution you propose, given that the issue affects only Fedora.

EDIT: as a matter of fact, the official wheels of PySide2 do not ship this library and they work on Fedora 32. It might be that the issue is in how conda-forge is compiling PySide2.

@daniel-123
Copy link
Contributor

@Sioma112233: another option is to just use the make install after downloading the zip file. Assuming you have all the required libraries on your system it should "just work".

@albertosottile
Copy link
Member

Closing this as we determined that the issue was outside our codebase.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants