Armin Rigo wrote:
import neatTricks in "/home/guido/lib/python" # no package
import package.module in "/home/guido/lib/python" # package
import foo in "." # relative import
from neatTricks in "../cmds" import a, b, c
s=os.path.join("some", "where"); import foo in s # expression path
where the semantics would be to search sys.path if and only if no 'in' clause
is specified. ('in' doesn't sound quite right...)
Armin -
Thinking about the semantics of the above, including corner cases, I
find myself wanting to make the semantics of:
in "<path>"
to be equivalent to:
sys.path.insert(0, "<path>")
del sys.path[0] # assuming the import doesn't modify sys.path
That doesn't seem to be quite equivalent to what you've proposed. On the
other hand, that seems to provide at least semi-reasonable answers to
questions about what happens to sys.modules, what happens if
sys.modules['package'] is defined when importing package.module, what's
the correct search path when a module being imported does an import, etc.
Having said that, that makes me feel negatively about the proposal,
since you could do it yourself directly.
Chris