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

Marek Kubica marek at xivilization.net
Mo Sep 12 15:04:55 CEST 2011


Hallo,

On Mon, 12 Sep 2011 13:03:29 +0200
Thomas 'PointedEars' Lahn <PointedEars at web.de> wrote:

> > Warum? Wenn ich meine Python-Pakete gemäß der Debian Python Policy
> > installiere, dann liegen sie unter
> > /usr/lib/python2.X/dist-packages. Wenn man dort nun ein Paket
> > "common" installiert, dann beißt sich das mit jedem anderen Paket,
> > welches "common" heißt.
> 
> Dein Paket heisst aber sinnvollerweise – da Du schon jetzt weisst,
> dass die Konfliktwahrscheinlichkeit andernfalls hoch wäre – gar nicht
> `common'

Wer sagt das? Ole meint er paketiert ein existierendes Paket und da hat
er nicht die Möglichkeit ein übergeordnetes Package einzuziehen. Was
bei der Lektüre des Threads durchaus klar wird.

> >>> Wenn das geschafft ist, besteht das Problem, dass sowohl
> >>> Userprogramme als auch der Code innerhalb der Pakete sich
> >>> untereinander mit "common" und "database" referenziert und damit
> >>> wohl nicht mehr lauffähig wäre.
> >> Unsinn.  man PYTHONPATH
> > 
> > Ich weiß, dass Du gerne kurz und ein wenig arrogant antwortest.
> 
> Unverschämtheit.

Empfindet sicher nicht nur Ole so.

> > Der Nutzer /weiß/ doch gar nichts über die Interna des packages,
> > woher sollte er also ahnen, dass er seinen PYTHONPATH anpassen muss?
> 
> Es ist nicht klar, was Du erreichen willst.  In einem Shellscript,
> wie Du geschrieben hattest, setzt man den PYTHONPATH, um python(1)
> geeignet aufzurufen.

Und was macht ein User der Library? Du wirst doch nicht sagen, dass es
ein gangbarer Weg ist, bei jeder Library zu schauen was man für
PYTHONPATH-Tricksereien machen muss um sie zu nutzen. Und das fällt
auch auf die Nase sobald ein User zwei Libraries namens `common`
einbinden will.

> In einem Python-Programm hingegen muss der Nutzer des Pakets dafür
> sorgen, dass es keine Namenskollisionen gibt.  Mit `import …' gibt es
> keine, weil `common' im Package `mypackage' immer mittels
> `mypackage.common' referenziert werden muss. 

Stop. `mypackage` existiert nicht. Der Restliche Punkt ist damit
hinfällig.

> > Und woher soll er wissen, dass auf dem konkreten System
> > dist-packages/ unter ebenjenem Pfad liegt? Muss jetzt jeder Nutzer
> > seine PYTHONPATH pflegen, nur um das unter dem Standardpfad
> > installierte package nutzen zu können?
> 
> Den PYTHONPATH kann das Installationsscript Deines Debian-Pakets
> einmalig für Deine damit installierten Shellscripts setzen.

Und auch alle zukünfig installierten Pakete sowie alle software die
externe Paketnutzer irgendwann schreiben werden?

> Score adjusted

Ich würde mich freuen wenn man, bevor man solche Posts schreibt,
erstmal schaut ob das überhaupt notwendig ist. Vielleicht kann man auch
gar nix sagen und die Atmosphäre in der Newsgroup/Mailingliste nicht zu
verpesten. Sowas hat mich nämlich auch aus de.comp.lang.javascript
vertrieben. Wäre schade wenn das auch hier passiert.

Zu Oles Punkt: es gibt keine "elegante" Lösung, sondern nur Hacks. Die
elegante Lösung wäre ein Package einzuziehen, aber wenn das nicht
möglich ist...

Ist dann auch die Frage, ob es ein Debian-Package braucht, wenn die
Software möglicherweise Probleme mit anderer Software verursacht.

grüße,
Marek


Mehr Informationen über die Mailingliste python-de