OKB (not okblacke) wrote: > But why? That __future__ import is supposed to make > absolute > imports the default, so why is "import thetest" importing > thetest.py instead of the package called thetest? The absolute > import should make it look in sys.path first and not try to import > from the script directory, right? > > If I change the outer directory name and change the code > in > thetest.py to match, it works fine. But I shouldn't have to do > this. How can I get relative imports to work correctly when > running a script whose filename is the same as that of the > directory (and thus the package) in which it resides?
After a bit more googling I discovered the answer here: http://stackoverflow.com/questions/1959188/absolute-import-failing-in- subpackage-that-shadows-a-stdlib-package-name The deal is that sys.path by default has the empty string as the first element, which tells Python to look first in the directory of the script being executed. This is unfortunate, but can worked around this way: import sys sys.path = sys.path[1:] + [''] (That is, move the current directory to the end of the search path instead of the beginning.) -- --OKB (not okblacke) Brendan Barnwell "Do not follow where the path may lead. Go, instead, where there is no path, and leave a trail." --author unknown -- http://mail.python.org/mailman/listinfo/python-list