Thomas 'PointedEars' Lahn <PointedEars@web.de> writes:
Eine mögliche Lösung habe ich doch schon erklärt. Für diejenigen, denen das jetzt immer noch nicht klar ist: [...]
Du könntest Dein unangebracht arrogantes Gehabe durchaus lassen.
-[mypackage/__init__.py]---------------------------------------------- [...] my_path = os.path.dirname(__file__) if not my_path in sys.path: sys.path.insert(1, my_path)
Das funktioniert nicht, wie schon an anderer Stelle im Thread diskutiert. Bau doch mal Dein Paket und ein identisches unter "otherpackage" (d.h., otherpackage.__init__.py ist identisch zu mypackage.__init__.py). Dann: mypackage/common/Base.py, otherpackage/common/Base.py (identisch) --------------------8<------------- class Base(object): def __str__(self): return __file__ --------------------8<------------- mypackage/database/Databse.py, otherpackage/database/Databse.py (identisch) --------------------8<------------- from common.Base import Base class Database(Base): pass --------------------8<------------- test.py: --------------------8<------------- from mypkg.database.Database import Database from otherpkg.database.Database import Database as Otherbase ob = Otherbase() db = Database() print ob, db --------------------8<------------- zeigt, dass otherpkg.database.Database die falsche Baseklasse nimmt.
Diese Lösung ist natürlich nicht besonders schön; besser wäre sauberer Quelltext im Originalpaket. Aber es funktioniert –
$ PYTHONPATH=../tmp python test.py 42
nicht. ~/poo$ python test.py /home/ole/poo/mypkg/common/Base.py /home/ole/poo/mypkg/common/Base.py
HTH
Score adjusted?