Ich werde nicht in die Polemik auf Umbenennung erhalten und stattdessen konzentrieren Sie sich auf die zeigen, wie zu tun, was Sie wollen (ob es „gut für Sie“ ist oder nicht ;-). Die Lösung ist nicht schwierig ...
Nur __path__
einstellen! Eine kleine Demonstration:
$ mkdir /tmp/modules /tmp/packages
$ mkdir /tmp/packages/openid
$ echo 'print "Package!"' > /tmp/packages/openid/__init__.py
$ gvim /tmp/modules/openid.py
$ PYTHONPATH='/tmp/modules:/tmp/packages' python -c'import openid'
Module!
Package!
dies zeigt eine Modul openid ein gleichnamiges Paket sogar importieren Verwaltung obwohl der Weg des Moduls früher in sys.path kommt, undsys.modules['openid']
klar sind zu diesem Zeitpunkt bereits eingestellt. Und all das "Geheimnis" ist in einfachen Code des openid.py ...:
print "Module!"
__path__ = ['/tmp/packages']
import openid
ohne __path__
Zuordnung, natürlich, es nur Module!
emittieren würde.
Funktioniert natürlich auch für den Import von Submodulen innerhalb des Pakets. Do:
$ echo 'print "Submod!"' > /tmp/packages/openid/submod.py
und ändern openid.py der letzten Zeile zu
from openid import submod
und Sie werden sehen:
$ PYTHONPATH='/tmp/modules:/tmp/packages' python -c'import openid'
Module!
Package!
Submod!
$
‚benennen Sie Ihre Datei‘ – SilentGhost
Was ist der Grund für die Datei nicht umbenennen? Es scheint wie kleine Lösung im Vergleich zu suchen nach einem Weg um ihn herum. – Zoomulator
Die Datei sollte semantisch openid heißen, da sie sich in einem Modul mit "Typen" von Aliasen befindet. openid ist der Name des Typs. –