http://stackoverflow.com/questions/1977362/how-to-create-module-wide-variables-in-python http://stackoverflow.com/questions/1977362/how-to-create-module-wide-variables-in-python
However, he then goes on and says:
[..]all you can do is make a variable in a particular scope. (If you make a variable inside the Python interpreter, and then import other modules, your variable is in the outermost scope and thus global within your Python session.[..]
Okay, so we can t assign globals in the original sense, but it appears to be possible to access variables in the outermost scope from within a package, via the global keyword, correct?
I am then, apparently, missing something crucial in my efforts to access a variable passed to my python program via commandline arguments.
My program has the usual __main__.py, which handles argument parsing and executes code from my python module backend.
backend has code that relies on input via command line arguments. However, I seem to fail at making these arguments available to backend.
My package s layout is:
mypackage - __main__.py - backend/ -__init__.py -direction.py
Here s __main__.py:
import argparse # Setup ArgParser parser = argparse.ArgumentParser(description="Fancy Description of program.") parser.add_argument( --tar , nargs=1, dest= target , help= Specify output folder. , default=[ /path/to/output ]) target_dir = args.target[0] # Import backend now that our variable is set. from backend.direction import direction
And my backend/direction.py:
global target_dir print(target_dir)
Running this raises a NameError: target_dir is not defined. So where s the poop ? Am I assuming an impossibility here, or am I simply messing up on declaration?