Der nächste Satz nach dem man Sie in Ihrer Frage zitieren confirms, die in einem Paket definierten Namen („Variablen“, Ihre Formulierung zu verwenden) haben Vorrang vor Submodule/packages:
Die import
Erklärung ersten Tests ob der Artikel im Paket definiert ist; Wenn nicht, nimmt es an, dass es sich um ein Modul handelt, und versucht es zu laden.
Ich finde keine explizite Bestätigung in der Dokumentation für Python 2.7, dass Pakete Vorrang vor Modulen haben. Ich habe diese finden, in PEP 420:
Bei der Importverarbeitung wird die Importmaschinerie weiterhin über jedes Verzeichnis in der übergeordneten Pfad wiederholen, wie es in Python 3.2 der Fall ist. Während für ein Modul oder Paket mit dem Namen „foo“, für jedes Verzeichnis im übergeordneten Pfad suchen:
- Wenn
<directory>/foo/__init__.py
gefunden wird, wird ein reguläres Paket importiert und zurückgegeben.
- Wenn nicht, aber
<directory>/foo.{py,pyc,so,pyd}
gefunden wird, wird ein Modul importiert und zurückgegeben.
..., die zwar nur ausdrücklich darauf hin, dass dies das Verhalten in Python ist 3.2, genommen werden könnte bedeuten: „... und frühere Versionen von Python“. Auch dies bestätigt Ihre Feststellung, dass Pakete Vorrang vor Modulen haben.
Jedoch: wäre es eine schreckliche Idee, auf diese Implementierung Detail zu verlassen. Die Anzahl der Menschen auf der Welt, die sich dessen bewusst sind, geht wahrscheinlich nicht weit über die Kernentwickler von Python hinaus; Es ist in jeder Hinsicht undokumentiert, und es ist wahrscheinlich, dass es extrem schwierig ist, Bugs ausfindig zu machen.