Globaler "prefix" o.ae.

09/09/2011 - 14:45 von Ole Streicher | Report spam
Hallo Gruppe,

ich habe ein größeres Python-Paket, welches (neben der spezifischen
Konfiguration, siehe mein letztes Posting) dummerweise auch so
generische Namen wie "common", "database" als Modulnamen verwendet.

Importstatements sehen daher etwa so aus:

from common.config.Profile import profiles
from database.ps2.Database import database

usw.

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.

Daher wàre es gut, wenn man bei der Installation einen generischen
Prefix voranstellen könnte, so dass die Module etwa lauten

mypackage.common
mypackage.database

Erste Frage: wie macht man das?

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. Wie bringe ich ihm dann bei, dass innerhalb der Pakete automatisch
ein "mypackage" hinzugefügt wird? Und wie kann man dann in einem
Programm global sagen, dass "mypackage" im Suchpfad auftauchen soll?
Normalerweise wàre das ja ein

from mypackage import *

aber wohin kommt das, damit ich es nicht in jede Datei einzeln packen
muss?

Viele Grüße

Ole
 

Lesen sie die antworten

#1 Thomas PointedEars Lahn
11/09/2011 - 11:22 | Warnen spam
Ole Streicher wrote:

Hallo Gruppe,



Hallo Benutzer,

ich habe ein größeres Python-Paket, welches (neben der spezifischen
Konfiguration, siehe mein letztes Posting) dummerweise auch so
generische Namen wie "common", "database" als Modulnamen verwendet.

Importstatements sehen daher etwa so aus:

from common.config.Profile import profiles
from database.ps2.Database import database

usw.

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.



Unsinn.

Daher wàre es gut, wenn man bei der Installation einen generischen
Prefix voranstellen könnte, so dass die Module etwa lauten

mypackage.common
mypackage.database

Erste Frage: wie macht man das?



Verzeichnis `mypackage' erstellen.

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

Wie bringe ich ihm dann bei, dass innerhalb der Pakete automatisch
ein "mypackage" hinzugefügt wird? Und wie kann man dann in einem
Programm global sagen, dass "mypackage" im Suchpfad auftauchen soll?



man PYTHONPATH

Normalerweise wàre das ja ein

from mypackage import *

aber wohin kommt das, damit ich es nicht in jede Datei einzeln packen
muss?



Nirgendwohin.

RTFM: <http://docs.python.org/release/3.2.....html#the-
import-statement>

<http://www.tty1.net/smart-questions_de.html>

PointedEars

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

Ähnliche fragen