Seite 1 von 1
Import Anweisung
Verfasst: Montag 20. Juli 2009, 07:09
von kostonstyle
hallo miteinander
habe eine Frage zu der import Anweisung. Ich habe ein Modul mit Funktionen programmiert,
diese befindet sich im Paket(Verzeichnis) library. Nun möchte ich das Paket importieren.
Die Paketstruktur sieht wie folgt aus.
Mainorder
|
|-library(Paket)
| |-__init__.py
| |-module.py(Modul)
|
|-main.py
Möchte das Modul module.py in das main Programm einfügen, wie mache ich das?
Habe folgendes versucht, aber der Compiler motzt.....
from . module Lirary
Gruss kostonstyle
Verfasst: Montag 20. Juli 2009, 08:07
von cofi
Verfasst: Montag 20. Juli 2009, 08:10
von ms4py
In die __init__ dann
BTW: Du hast die Namen ja hoffentlich nur als Beispiel genommen und die Ordner und Datein heißen nicht wirklich so.
Edit: Zu langsam... So gehts natürlich auch.

Verfasst: Montag 20. Juli 2009, 09:39
von cofi
ice2k3 hat geschrieben:library.module.func()[/code]
In die __init__ dann
Wie kommst du denn darauf? Die ``__init__.py`` darf leer sein, muss aber vorhanden sein, um ein Paket als Paket zu kennzeichen. Die Module muss man nicht importieren, allenfalls als Liste ``__all__`` definieren, um sie plattform-unabhaengig zu definieren - Windows baut da natuerlich Mist

- aber mehr dazu unter den Links.
Verfasst: Montag 20. Juli 2009, 11:35
von ms4py
Wenn ich das nicht mache, gibts die Exception ``Module "library" has no attribute "module"``. Ich importiere ja "library" und nicht "library.module", dann muss ich das so machen.
Ist natürlich Ansichtssache, wie man das macht, aber bei meinem Beispiel muss das in die __init__ rein (und vermutlich nicht nur unter Windows).
Verfasst: Montag 20. Juli 2009, 12:03
von cofi
Ja, entschuldige das hab ich ueberlesen.
Allerdings sollte man IMHO dem Paketbenutzer die Entscheidung ueberlassen, was er denn aus dem Paket benutzen will und ihm das nicht ueber die ``__init__.py`` aufzwingen.
Ausserdem: ``Explicit is better than implicit``

Verfasst: Dienstag 21. Juli 2009, 17:51
von birkenfeld
ice2k3 hat geschrieben:
In die __init__ dann
Auch wenn mir diese Praxis nicht besonders gut gefällt, wenn man das schon so macht, sollte es auf jeden Fall ``from library import module`` sein. Das ist erstens explizit und zweitens zukunftssicher.
Wenn man ein Python, das explizite relative Imports kennt, verwendet, geht auch ``from . import module``, das ist allerdings nur 2.5+.
Verfasst: Mittwoch 22. Juli 2009, 10:28
von kostonstyle
super es hat geklappt
vielen dank