Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.python > #28752 > unrolled thread

Re: how to run python2.6 module with absolute imports stand alone

Started byGelonida N <gelonida@gmail.com>
First post2012-09-09 04:03 +0200
Last post2012-09-09 04:03 +0200
Articles 1 — 1 participant

Back to article view | Back to comp.lang.python

This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by below is the oldest one visible, not the original post.


Contents

  Re: how to run python2.6 module with absolute imports stand alone Gelonida N <gelonida@gmail.com> - 2012-09-09 04:03 +0200

#28752 — Re: how to run python2.6 module with absolute imports stand alone

FromGelonida N <gelonida@gmail.com>
Date2012-09-09 04:03 +0200
SubjectRe: how to run python2.6 module with absolute imports stand alone
Message-ID<mailman.400.1347156249.27098.python-list@python.org>
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.





>
>

[toc] | [standalone]


Back to top | Article view | comp.lang.python


csiph-web