How to tell if interpreter is in interactive mode

Steve Holden sholden at
Wed Jun 13 13:12:47 CEST 2001

"John Copella" <jcopella at> wrote ...
> I have some code in a module that I need to run only when the interpreter
> running interactively.  Is there any way to test for this at run time?  I
> have looked at sys.stdin.isatty(), but this returns 1 when running
> non-interactively as well (unless you do something odd like redirect stdin
> to /dev/null).
> Thanks in advance,
> John
>From the 2.0 manual:

"""2.2.3 The Interactive Startup File
When you use Python interactively, it is frequently handy to have some
standard commands executed every time the interpreter is started. You can do
this by setting an environment variable named $PYTHONSTARTUP to the name of
a file containing your start-up commands. This is similar to the .profile
feature of the Unix shells.

This file is only read in interactive sessions, not when Python reads
commands from a script, and not when /dev/tty is given as the explicit
source of commands (which otherwise behaves like an interactive session). It
is executed in the same namespace where interactive commands are executed,
so that objects that it defines or imports can be used without qualification
in the interactive session. You can also change the prompts sys.ps1 and
sys.ps2 in this file. """

This might be usable, though I don't exploit it myself.



More information about the Python-list mailing list