On 15/04/2018 08:12, Nick Coghlan wrote: > On 14 April 2018 at 19:22, Steve Barnes <gadgetst...@live.co.uk> wrote: >> I generally love the current import system for "just working" regardless >> of platform, installation details, etc., but what I would like to see is >> a clear import local, (as opposed to import from wherever you can find >> something to satisfy mechanism). This is the one thing that I miss from >> C/C++ where #include <x> is system includes and #include "x" search >> differing include paths, (if used well). > > For the latter purpose, we prefer that folks use either explicit > relative imports (if they want to search the current package > specifically), or else direct manipulation of package.__path__. > > That is, if you do: > > from . import custom_imports # Definitely from your own project > custom_imports.__path__[:] = (some_directory, some_other_directory) > > then: > > from .custom_imports import name > > will search those directories for packages & modules to import, while > still cleanly mapping to a well-defined location in the module > namespace for the process as a whole (and hence being able to use all > the same caches as other imports, without causing name conflicts or > other problems). > > If you want to do this dynamically relative to the current module, > then it's possible to do: > > global __path__ > __path__[:] = (some_directory, some_other_directory) > custom_mod = importlib.import_module(".name", package=__name__) > > The discoverability of these kinds of techniques could definitely > stand to be improved, but the benefit of adopting them is that they > work on all currently supported versions of Python (even > importlib.import_module exists in Python 2.7 as a convenience wrapper > around __import__), rather than needing to wait for new language level > syntax for them. > > Cheers, > Nick. > Thanks Nick,
As you say not too discoverable at the moment - I have just reread PEP328 & https://docs.python.org/3/library/importlib.html but did not find any mention of these mechanisms or even that setting an external __path__ variable existed as a possibility. Maybe a documentation enhancement proposal would be in order? -- Steve (Gadget) Barnes Any opinions in this message are my personal opinions and do not reflect those of my employer. --- This email has been checked for viruses by AVG. http://www.avg.com _______________________________________________ Python-ideas mailing list Python-ideas@python.org https://mail.python.org/mailman/listinfo/python-ideas Code of Conduct: http://python.org/psf/codeofconduct/