[Python-de] Globaler "prefix" o.ae.

Thomas 'PointedEars' Lahn PointedEars at web.de
Di Sep 13 17:29:58 CEST 2011


Ole Streicher wrote:

> Thomas 'PointedEars' Lahn <PointedEars at web.de> writes:
>> -[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,

Das funktioniert hier sehr gut.

> wie schon an anderer Stelle im Thread diskutiert.

Wo genau?

> 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.

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.

>> 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

Dein Beispiel hat mit meinem nicht allzuviel zu tun.  Logisch, dass das *so* 
nicht funktioniert.

-- 
PointedEars

Please do not Cc: me. / Bitte keine Kopien per E-Mail.


Mehr Informationen über die Mailingliste python-de