Thomas 'PointedEars' Lahn <PointedEars@web.de> writes:
Ole Streicher wrote:
Thomas 'PointedEars' Lahn <PointedEars@web.de> writes:
-[mypackage/__init__.py]---------------------------------------------- Das funktioniert nicht, Das funktioniert hier sehr gut. wie schon an anderer Stelle im Thread diskutiert. Wo genau?
Message-ID: <87ipozgtsa.fsf@news.ole.ath.cx> und folgende. Sowas kommt halt von "Score adjusted".
zeigt, dass otherpkg.database.Database die falsche Baseklasse nimmt.
Du hast mypkg hier gar nicht importiert, daher wird auch der code in mypkg/__init__.py nicht ausgeführt und sys.path nicht geändert.
Nicht? test.py: --------------------8<------------- import sys from mypkg.database.Database import Database from otherpkg.database.Database import Database as Otherbase ob = Otherbase() db = Database() print ob, db print sys.path --------------------8<------------- $ python test.py /home/ole/poo/mypkg/common/Base.pyc /home/ole/poo/mypkg/common/Base.pyc ['/home/ole/poo', '/home/ole/poo/otherpkg', '/home/ole/poo/mypkg'] Wer schreibt dann wohl den dritten Eintrag? Du kannst natürlich auch vor das "from mypkg..." noch ein "import mypkg" setzen -- das ändert am Ergebnis nichts.
Dein Beispiel hat mit meinem nicht allzuviel zu tun. Logisch, dass das *so* nicht funktioniert.
Es ist Dein Beispiel -- ich habe mir lediglich erlaubt, "otherpackage" etwas zu konkretisieren. Das zeigt aber eben, dass diese Lösung (Pfad anpassen) das Problem nur kaschiert und nicht löst: die packages heißen immer noch common und database, und können lediglich zusätzlich unter mypackage.common bzw. mypackage.database angesprochen werden. Nie Namensraumverschmutzung und das Konfliktpotential bleibt bestehen, und das war doch der Anlass für mein erstes Posting: | Sowas lässt sich natürlich nicht so ohne weiteres z.B. in ein | Python-Repository einpflegen, weil es mit jedem anderen Paket, welches | so frech ist, "common" und "database" zu verwenden, clashen würde.