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.