Hello everyone,
I hope that E-Mail reaches someone. Since its the first time I am
using a thing like a mailing list, I am saying sorry in advance for
any inconvience caused ;-)
However, I am writing you because of a small idea / feature request
for the python import mechanism, which caused me some (in my opinion
unnecessary) trouble yesterday:
I noticed that when using an import statement, the following seems
to be true:
Current state:
- Python will search for the first TOP-LEVEL hit when resolving
an import statement and search inside there for the remainder
part of the import. If it cannot find the symbols it will fail.
(Tested on Python 3.8)
Proposed Change:
- If the import fails at some point after finding the first
level match: The path is evaluated further until it eventually
may be able to resolve the statement completely-
My use case scenario:
- I have a bunch of different projects built using Python
- I want to use parts of it within a new project
- I place them withina sub-folder (for example libs) within the
new project using git submodule or just copy / link them there,
whatever
- I append the libs to path (sys.path.append)
- Python WILL find the packages and basically import everything
right
- Problem:
- if themain package does actually contain a toplevel folder
that is named the same like one within the other modules (for
example a "ui" submodule) python will search withon one and
only one of these ui modules within exactly one project
- Name clashes can only be avoided by renaming
I know that this is propably not the suggested and best way to
reuse existing code. But its the most straight-forward and keeps
the fastest development cycle, which is I think is a reason Python
grew so fast. At the time of writing I cannot think of any place
where this change would destroy or change any already working code
and I don't see a reason why the import would completely fail
under this circumstances showing a different behaviour for top
level fails and nth-level fails.
What do you think about that hopefully very small change of the
import behaviour?
Thanks for your time reading and Best wishes,
Richard