Spyder install from conda defaults channel installs wrong pyqt version, then fails on start

When creating a new environment with spyder after about a week ago:

conda create -n spydertest spyder

conda creates the environment and installs spyder, but incorrectly installs a version of pyqt (version 6, currently at version 6.11.0) that spyder is not currently compatible with. It needs version 5 (latest version = 5.15.11).

I tested 2 different solutions, both work:

conda create -n spydertest pyqt=5.15.11 spyder

which forces the correct pyqt version. The version at conda-forge seems to work correctly, so the following also works fine:

conda create -n spydertest spyder -c conda-forge

I’m assuming this means that the package requirements for the spyder package in the conda defaults channel is incorrect? I submitted this report to the Spyder github ( Spyder failing to start from *fresh* conda environment after last week · Issue #26365 · spyder-ide/spyder · GitHub ), but they said they don’t have control of the package in the conda defaults channel, only the one in conda-forge.

I looked at the package requirements and it does look like the spyder package > 6.1.0 (and most 6.1.0 packages) in the conda defaults channel incorrectly specifies:

  • pyqt >=6.5,<7

when it should be:

  • pyqt >=5.15,<5.16

Hi @rswitt ,

This is now fixed. Thanks for flagging it and for testing workarounds.

About the pyqt requirement: the pyqt >=6.5,<7 requirement in the spyder package is correct. Spyder 6 supports Qt6, and the defaults channel has moved to Qt6. Changing it to pyqt >=5.15,<5.16 would have masked the problem rather than fixed it. Your pyqt 5 workaround only helped because it avoided the broken Qt6 packages altogether.

What actually happened: Spyder depends on Qt, a set of libraries for building user interfaces. A recent Qt update didn’t work with some packages built against the previous Qt version, and conda was installing the two together. Spyder itself was fine. The problem was in the Qt packages underneath it.

Issues like this are hard to catch ahead of time. Qt aims to keep newer releases compatible with packages built against older ones, so we don’t rebuild every dependent package each time Qt updates. With many packages built on Qt, that isn’t practical. But that compatibility only holds when everything is built with the same compiler, system environment and configuration, and small differences between builds can break it without any obvious sign. That’s why reports like yours matter so much.

What we did: We updated the package metadata so conda only installs Qt versions that work together. The fix also protects other Qt-based packages, not just Spyder.

What you need to do: Nothing for new environments. conda create -n spydertest spyder now works as expected. If you used the pyqt=5.15.11 workaround, you can drop it and recreate the environment without the pin to get the current Qt6 setup. If you have an environment that’s already broken, delete it and create it again.

Thanks again

2 Likes

Thanks @Tyler_F_Anaconda , I verified that it does now work with a fresh environment and installing just spyder. Thank you for tracking down the problem and correcting it!

1 Like