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
Import Anweisung
- cofi
- Python-Forum Veteran
- Beiträge: 4432
- Registriert: Sonntag 30. März 2008, 04:16
- Wohnort: RGFybXN0YWR0
Code: Alles auswählen
import library.module
Code: Alles auswählen
from library import module
Falls du 3.x benutzt solltest du noch http://docs.python.org/3.1/tutorial/mod ... l#packages lesen, da sich die relativen IMporte geaendert haben.
Code: Alles auswählen
import library
library.module.func()
Code: Alles auswählen
import module
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.
- cofi
- Python-Forum Veteran
- Beiträge: 4432
- Registriert: Sonntag 30. März 2008, 04:16
- Wohnort: RGFybXN0YWR0
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.ice2k3 hat geschrieben:library.module.func()[/code]
In die __init__ dann
Code: Alles auswählen
import module
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).
Ist natürlich Ansichtssache, wie man das macht, aber bei meinem Beispiel muss das in die __init__ rein (und vermutlich nicht nur unter Windows).
- cofi
- Python-Forum Veteran
- Beiträge: 4432
- Registriert: Sonntag 30. März 2008, 04:16
- Wohnort: RGFybXN0YWR0
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``
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``
- birkenfeld
- Python-Forum Veteran
- Beiträge: 1603
- Registriert: Montag 20. März 2006, 15:29
- Wohnort: Die aufstrebende Universitätsstadt bei München
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.ice2k3 hat geschrieben:In die __init__ dannCode: Alles auswählen
import library library.module.func()
Code: Alles auswählen
import module
Wenn man ein Python, das explizite relative Imports kennt, verwendet, geht auch ``from . import module``, das ist allerdings nur 2.5+.
-
- User
- Beiträge: 148
- Registriert: Sonntag 2. November 2008, 12:13
super es hat geklappt
vielen dank
vielen dank