What does it do?
Questionary lets developers build friendly, interactive prompts in the terminal, checkboxes you toggle with the spacebar, menus you navigate with arrow keys, yes or no confirmations, instead of forcing users to type raw text answers. It’s like replacing a bare paper form with a guided, click-through survey, except it all happens inside a terminal window. A developer defines a question and a list of choices, and questionary handles rendering the interactive menu, validating input, and moving to the next question. It’s commonly used in setup wizards for command-line tools.
See it in action
This shows the user an arrow-key menu of options in the terminal and then prints back whichever one they picked.
import questionary
answer = questionary.select(
"What do you want to do?",
choices=["Deploy", "Rollback", "Cancel"]
).ask()
print(f"You chose: {answer}")
Why would a non-developer care?
Setup processes that feel guided and forgiving, rather than demanding exact text input with zero room for typos, are a big reason some command-line tools feel approachable to newcomers while others feel intimidating.
Real-world examples
Installer and project-setup tools frequently use interactive prompts like this to walk users through configuration choices step by step, similar to how a hotel checkout kiosk guides you through options rather than handing you a blank form. Without this kind of interface, users are left typing exact strings from memory, which is a common source of setup errors.
Who uses it
Developers building command-line installers, setup wizards, and configuration tools meant to be used by people who aren’t necessarily comfortable typing precise commands.
How it compares to alternatives
It’s built on top of prompt-toolkit but trades that library’s raw flexibility for a much simpler, ready-made set of question types like checkboxes and select menus, similar in spirit to the Inquirer.js library from the JavaScript world that inspired it.