Bug description

Testing Superset v5.0.0 in a Python 3.10 virtual environment on Linux. In preparation for running via WSGI, I installed gevent, but it pulls in an incompatible version of greenlet:

$ python -m pip install gevent
Collecting gevent
  Using cached gevent-25.9.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.metadata (14 kB)
Collecting greenlet>=3.2.2 (from gevent)
  Using cached greenlet-3.2.4-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.metadata (4.1 kB)
Requirement already satisfied: zope.event in ./venv/lib/python3.10/site-packages (from gevent) (6.0)
Requirement already satisfied: zope.interface in ./venv/lib/python3.10/site-packages (from gevent) (8.0.1)
Requirement already satisfied: setuptools>=75.8.2 in ./venv/lib/python3.10/site-packages (from zope.event->gevent) (80.9.0)
Using cached gevent-25.9.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (2.2 MB)
Using cached greenlet-3.2.4-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (584 kB)
Installing collected packages: greenlet, gevent
  Attempting uninstall: greenlet
    Found existing installation: greenlet 3.0.3
    Uninstalling greenlet-3.0.3:
      Successfully uninstalled greenlet-3.0.3
ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.
apache-superset 5.0.0 requires greenlet<=3.1.1,>=3.0.3, but you have greenlet 3.2.4 which is incompatible.
Successfully installed gevent-25.9.1 greenlet-3.2.4

The Superset docs recommend using gevent with Gunicorn, but don't specify which version. As Superset v5.0.0 requires greenlet<=3.1.1,>=3.0.3, it seems the docs should recommend using gevent==24.2.1, as that is the last version that satisfies Superset's requirement.

See: https://github.com/gevent/gevent/blob/24.2.1/setup.py#L213C6-L213C23

Screenshots/recordings

No response

Superset version

5.0.0

Python version

3.10

Node version

Not applicable

Browser

Not applicable

Additional context

No response

Checklist

  • [x] I have searched Superset docs and Slack and didn't find a solution to my problem.
  • [x] I have searched the GitHub issue tracker and didn't find a similar bug report.
  • [x] I have checked Superset's logs for errors and if I found a relevant Python stacktrace, I included it here as text in the "additional context" section.

Comment From: dosubot[bot]

Hi @alanorth! I'm Dosu and I’m helping the superset team.

You're right—Superset v5.0.0 strictly requires greenlet==3.1.1, but recent gevent releases (like 25.x) require greenlet>=3.2.2, which causes a dependency conflict. Superset does not directly depend on gevent, so its version isn't pinned, but installing the latest gevent will pull in an incompatible greenlet version and break Superset's requirements. This is enforced in Superset's requirements/base.txt, which lists greenlet==3.1.1 as a hard requirement (source).

To avoid this, use gevent==24.2.1, which is the last version compatible with greenlet<=3.1.1 (gevent 24.2.1 setup.py). You can install compatible versions with:

pip install "gevent==24.2.1" "greenlet==3.1.1"

This will ensure both packages are compatible with Superset v5.0.0 and Python 3.10. There are currently no official docs or issues in the Superset repo that address this, so this manual pinning is necessary for now.

To reply, just mention @dosu.


How did I do? Good | Irrelevant | Incorrect | Verbose | Hallucination | Report 🐛 | Other  Chat with Dosu Join Discord Share on X

Comment From: alanorth

Yay I'm smarter than the AI. 🤘