Neal Becker <ndbeck...@gmail.com> writes: > I want to make sure any modules I build in the current directory > overide any others. To do this, I'd like sys.path to always have './' > at the beginning.
The ‘sys.path’ list is used only for *absolute* imports. Modules in the current directory should not be imported with an absolute path[0]. So, the current directory should not be in ‘sys.path’. So, for the past ten years and more, Python supports import of modules from the current directory with an explicit *relative* path:: # Absolute imports, searching ‘sys.path’. import datetime from collections import namedtuple # Relative imports, starting from this module's directory. from . import foo from .bar import baz See <URL:https://www.python.org/dev/peps/pep-0328/>, in particular <URL:https://www.python.org/dev/peps/pep-0328/#guido-s-decision>. [0]: Why not? See the rationale for forcing absolute import by default <URL:https://www.python.org/dev/peps/pep-0328/#rationale-for-absolute-imports>, “[I]t is not clear whether ‘import foo’ refers to a top-level module or to another module inside the package.[…] It's a particularly difficult problem inside packages because [without explicit relative import syntax] there's no way to specify which module is meant.” -- \ “True greatness is measured by how much freedom you give to | `\ others, not by how much you can coerce others to do what you | _o__) want.” —Larry Wall | Ben Finney -- https://mail.python.org/mailman/listinfo/python-list