It’s just a function. Import it and call it:
import myModule
myModule.main()
If you need to parse arguments, you have two options:
-
Parse them in
main()
, but pass insys.argv
as a parameter (all code below in the same modulemyModule
):def main(args): # parse arguments using optparse or argparse or what have you if __name__ == '__main__': import sys main(sys.argv[1:])
Now you can import and call
myModule.main(['arg1', 'arg2', 'arg3'])
from other another module. -
Have
main()
accept parameters that are already parsed (again all code in themyModule
module):def main(foo, bar, baz='spam'): # run with already parsed arguments if __name__ == '__main__': import sys # parse sys.argv[1:] using optparse or argparse or what have you main(foovalue, barvalue, **dictofoptions)
and import and call
myModule.main(foovalue, barvalue, baz='ham')
elsewhere and passing in python arguments as needed.
The trick here is to detect when your module is being used as a script; when you run a python file as the main script (python filename.py
) no import
statement is being used, so python calls that module "__main__"
. But if that same filename.py
code is treated as a module (import filename
), then python uses that as the module name instead. In both cases the variable __name__
is set, and testing against that tells you how your code was run.