views:

236

answers:

1

The question is rather straightforward but not answered by searching. How do I determine in a python script whether this script is imported as a module or run as a script? Is there a difference at all in python?

The problem is, that I want to evaluate the command line parameters only if run as a script, but not if the module is only imported to use it in another script. (I want to be able to use one script as both library and program.) I am afraid the vanilla way would be to build the lib and a second script that uses it, but I'd like to have a second option for small tool/libs.

+11  A: 

from python docs:

When you run a Python module with

python fibo.py

the code in the module will be executed, just as if you imported it, but with the __name__ set to "__main__". That means that by adding this code at the end of your module:

if __name__ == '__main__':
    # Running as a script

you can make the file usable as a script as well as an importable module, because the code that parses the command line only runs if the module is executed as the “main” file

Nadia Alramli
this looks slightly magic but is actually a completely standard idiom. You will also be \_\_main\_\_ if you are a module invoked by 'python -m somemodule'.
bobince