Celery Error: No such command 'flower' (tested fix)
Error: No such command 'flower' means Flower is not installed in the Python environment that runs your celery command. Run python -m pip install flower with that environment's Python, then start it as celery -A proj flower (with -A before flower, or Flower ignores it).
Error: No such command 'flower'. means the celery executable you ran does not see the Flower package. Flower is a separate project that registers itself as a celery sub-command when it is installed in the same Python environment as Celery. Measured with Celery 5.6.3 and Flower 2.2.0 on Python 3.13.5, using two virtualenvs: one with Celery only, one with Celery and Flower.
1. The error: Flower not installed in this environment
$ which celery
/tmp/fx384/ve/bin/celery
$ celery -A tasks flower
Usage: celery [OPTIONS] [COMMAND] [ARGS]...
Try 'celery --help' for help.
Error: No such command 'flower'.
Did you mean one of these?
worker
$ python -m pip show flower
WARNING: Package(s) not found: flower
Exit code 2 and a "Did you mean" list that only offers worker. pip show flower run with the same environment's Python confirms Flower is missing there. A common cause is installing Flower globally, with pipx, or in another virtualenv, while which celery points somewhere else.
2. The fix: install flower next to celery
$ which celery
/tmp/fl388/ve/bin/celery
$ python -m pip show flower | grep -E "^(Name|Version)"
Name: flower
Version: 2.2.0
$ timeout 6 celery -A tasks flower --port=8965 2>&1 | cut -c1-150
[I 261023 11:34:33 command:177] Visit me at http://127.0.0.1:8965
[I 261023 11:34:33 command:186] Broker: redis://127.0.0.1:8964/0
[I 261023 11:34:33 command:187] Registered tasks:
['celery.accumulate',
'celery.backend_cleanup',
'celery.chain',
'celery.chord',
'celery.chord_unlock',
'celery.chunks',
'celery.group',
'celery.map',
'celery.starmap',
'tasks.add',
'tasks.div',
'tasks.on_error']
[I 261023 11:34:33 mixins:228] Connected to redis://127.0.0.1:8964/0
[W 261023 11:34:34 inspector:98] Inspect method registered failed
[W 261023 11:34:34 inspector:98] Inspect method active_queues failed
[W 261023 11:34:34 inspector:98] Inspect method conf failed
[W 261023 11:34:34 inspector:98] Inspect method stats failed
[I 261023 11:34:39 command:26] 15 detected, shutting down
With pip install flower in the environment that owns celery, the sub-command exists and Flower starts on the given port. The "Inspect method ... failed" warnings only mean no worker was running at that moment; they go away once a worker is up.
3. Put -A before flower, not after
$ timeout 6 celery flower -A tasks --port=8965 2>&1 | cut -c1-150 | head -4
You have incorrectly specified the following celery arguments after flower command: ['-A']. Please specify them after celery command instead following
[I 261023 11:34:39 command:177] Visit me at http://127.0.0.1:8965
[W 261023 11:34:39 connection:671] No hostname was supplied. Reverting to default 'localhost'
[I 261023 11:34:39 command:186] Broker: amqp://guest:**@localhost:5672//
$ timeout 6 python -m celery -A tasks flower --port=8965 2>&1 | cut -c1-150 | head -2
[I 261023 11:34:50 command:177] Visit me at http://127.0.0.1:8965
[I 261023 11:34:50 command:186] Broker: redis://127.0.0.1:8964/0
celery flower -A tasks does not fail: Flower prints a warning and then ignores -A, so it falls back to the default broker amqp://guest:**@localhost:5672// and shows nothing from your app. Global options (-A, --broker) go before the sub-command: celery -A tasks flower. python -m celery ... is a handy way to be sure you use the environment of that python.
Related: Celery Error 111 connection refused, celery beat vs celery worker, Celery logging configuration.
Frequently asked questions
How do I fix Error: No such command 'flower' in Celery?
Install Flower into the same environment as Celery (python -m pip install flower, using the Python that owns the celery executable) and run celery -A proj flower.
Is Flower part of Celery?
No. Flower is a separate package; once installed next to Celery it adds the flower sub-command to the celery CLI.
Why does Flower connect to amqp://guest@localhost instead of my broker?
If -A comes after flower (celery flower -A proj), Flower warns and ignores it, then uses the default AMQP broker. Write celery -A proj flower.
Written with AI assistance. Measured on 2026-10-23 with Celery 5.6.3, Flower 2.2.0 and tornado 6.6 on Python 3.13.5 in two virtualenvs, Redis 7 (Docker) as broker. Each block was run verbatim and the output pasted unedited. PlainHeaders is our extension; Celery and Flower are free.