On 09/08/2012 02:13 AM, Mark Lawrence wrote:
On 07/09/2012 23:04, Gelonida N wrote:
Hi,
many of my modules contain following section at the end
def main():
do_something()
if __name__ == '__main__':
main()
This allows me to run some basic example code
or some small test in a stand alone mode.
My new modules contain following line at the beginning:
from __future__ import absolute_import
I like this:
- It can reduce import name conflicts
- and second it allows 'relative' imports like
from .othermodule import funcname
from ..mod_one_level_higher import fdfsd
However If I try to run such a script from the command line it will now
complain with
ValueError: Attempted relative import in non-package
Any tricks to work around this ???
The only idea, that I have is to have a script, that would take my
modulename or path name as parameter, and try to import it and then call
the main function of the imported module.
Not very elegant, but probably functional.
Thanks in advance for any other suggestions / ideas.
I hope this helps
http://stackoverflow.com/questions/3616952/how-to-properly-use-relative-or-absolute-imports-in-python-modules
It seems the safest bet seems to be to not use relative imports.
What I did in the end however is write a wrapper script, that takes
another script as parameter, converts it's path name to a module name,
imports it, adapts sys.path and calls main of the imported module.
Perhaps a little overkill, but most convenient, as the script can even
adapt sys.path prior to importing other files if required.
--
http://mail.python.org/mailman/listinfo/python-list