hi
ich hab vor 3 tagen angefangen mich mit python zu beschäftigen. klappt soweit auch
ganz gut. jedoch hab ich jetzt in einem tutorial gelesen das man möglichst viel mit
modulen arbeiten sollte(leutet mir auch ein). jetzt stellt sich mir nur das problem das
ich die module nicht laden kann. ich wollte sie so abspeichern das ich sie in meinem
home verzeichnis (nutze linux) unter
"programieren/python/programme/"programmname"/module"
habe, und wollte das ganze jetzt auch noch so aufbauen das das programm
immernoch funktioniert wenn ich den ordner "programmname" verschiebe.
hoffe ihr könnt mir helfen
mfg
sorb
[newb frage] umgang mit modulen?
-
- Python-Forum Veteran
- Beiträge: 2010
- Registriert: Freitag 11. Oktober 2002, 18:00
- Wohnort: Salzburg
- Kontaktdaten:
Hi sorb,
da musst Du den Pythonpath erweitern in Deinem Hauptscript.
Gruß
Dookie
da musst Du den Pythonpath erweitern in Deinem Hauptscript.
Code: Alles auswählen
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
import os, sys
sys.path.append(os.path.abspath('./module'))
#hier folgen die weiteren Importe, die nun auch aus dem module-Verzeichnis kommen können
Dookie
hi
danke für die schnelle antwort.
irgendwas mach ich hier jedoch noch falsch.
und diese fehler meldung spuckt er mir aus:
dabei fällt mir gleich noch eine frage ein. muß ich ihm eigentlich im modul auch noch
mal sagen welchen interpreter er benutzen soll?
mfg
sorb
danke für die schnelle antwort.
irgendwas mach ich hier jedoch noch falsch.
Code: Alles auswählen
#!/usr/bin/python
# -*- coding: iso-8859-1 -*-
import os, sys
sys.path.append(os.path.abspath('./module'))
import test
print 'Herzlich Wilkommen zum MBB-Programm'
beitrag = input('Wie hoch ist ihr monatlicher beitrag?: ')
alter = input("Wie alt ist das zu berechnende Mitglied?: ")
behinderung = raw_input('Ist Ihr Mitglied Behindert?: (J/N) ')
if behinderung == 'j':
behigrad = input('Wie groß ist die Behinderung?: (20/30/50)%')
if behigrad == 20:
behierm = 0.80
else:
if behigrad == 30:
behierm = 0.50
else:
if behigrad == 50:
behierm = 0.25
test.beiber(beitrag,behierm,alter)
else:
behierm = 1
test.beiber(beitrag,behierm,alter)
Code: Alles auswählen
Traceback (most recent call last):
File "./abc.py", line 5, in ?
import test
File "/home/kamikaze/Programieren/Python/Programme/übungen/mitgliederbeitrag01/test.py", line 24, in ?
test.beiber(beitrag,behierm,alter)
AttributeError: 'module' object has no attribute 'beiber'
mal sagen welchen interpreter er benutzen soll?
mfg
sorb
-
- Python-Forum Veteran
- Beiträge: 2010
- Registriert: Freitag 11. Oktober 2002, 18:00
- Wohnort: Salzburg
- Kontaktdaten:
Hi nochmal,
hast Du noch irgendwo eine test.py? Warscheinlich wird diese als Modul importiert und dort ist dann keine Funktion beiber definiert.
In einem zu importierenden Modul braucht kein Interpreter angegeben zu werden, wird aber trotzdem gemacht, weil es ja leicht möglich ist direkt im Modul eine Testroutine, die nur wenn das Script direkt (in der Console) gestartet wird einzubauen.
Gruß
Dookie
hast Du noch irgendwo eine test.py? Warscheinlich wird diese als Modul importiert und dort ist dann keine Funktion beiber definiert.
In einem zu importierenden Modul braucht kein Interpreter angegeben zu werden, wird aber trotzdem gemacht, weil es ja leicht möglich ist direkt im Modul eine Testroutine, die nur wenn das Script direkt (in der Console) gestartet wird einzubauen.
Gruß
Dookie
Zuletzt geändert von Dookie am Donnerstag 13. Mai 2004, 17:05, insgesamt 1-mal geändert.
Hi. Es gibt bereits ein Pythonmodul, das "test" heißt. Du musst also einfach dein Modul anders nennen oder deinen eigenen Path vor die Pfade von Python stellen, indem du statt sys.path.append einfach sys.path.insert(0,os.path.abspath('./module')) benutzt (1. ist sauberer, da dann immer eindeutig das Modul geladen wird, was man erwartet).
hi
lag an dem modul namen "test" habs umbenannt jetzt gehts
besten dank für eure hilfe
mfg
sorb
lag an dem modul namen "test" habs umbenannt jetzt gehts
besten dank für eure hilfe
mfg
sorb
hi
eine sache wär da noch
könntet ihr mir bitte erklären was diese zeile:
sys.path.append(os.path.abspath('./module'))
genau bedeutet oder mir ne seite empfehlen wo ich das nachlesen kann?
hoff ich fall euch net zu sehr aufn wecker
mfg
sorb
eine sache wär da noch

könntet ihr mir bitte erklären was diese zeile:
sys.path.append(os.path.abspath('./module'))
genau bedeutet oder mir ne seite empfehlen wo ich das nachlesen kann?
hoff ich fall euch net zu sehr aufn wecker

mfg
sorb
-
- Python-Forum Veteran
- Beiträge: 2010
- Registriert: Freitag 11. Oktober 2002, 18:00
- Wohnort: Salzburg
- Kontaktdaten:
sys.path ist eine Liste in der die Pfade stehen, in denen Python nach zu importierenden Modulen sucht. "append" ist eine Listenmethode, die ein Element zu einer Liste hinzufügt.
Die Funktion os.path.abspath() macht aus einem relativen Pfad wie "./module" einen absoluten Pfad wie "/home/kamikaze/Programieren/Python/Programme/übungen/mitgliederbeitrag01/module"
Die Ausgabe der Funktion wird dann direkt an sys.path.append als Parameter übergeben und so dieses Verzeichnis der Liste sys.path hinzugefügt.
Einzelne Funktionen aus Modulen kannst Du auch wunderbar in einer Console in der Python interaktiv läuft ausprobieren
Gruß
Dookie
Die Funktion os.path.abspath() macht aus einem relativen Pfad wie "./module" einen absoluten Pfad wie "/home/kamikaze/Programieren/Python/Programme/übungen/mitgliederbeitrag01/module"
Die Ausgabe der Funktion wird dann direkt an sys.path.append als Parameter übergeben und so dieses Verzeichnis der Liste sys.path hinzugefügt.
Einzelne Funktionen aus Modulen kannst Du auch wunderbar in einer Console in der Python interaktiv läuft ausprobieren
Code: Alles auswählen
fritz@seneca:~$ python
Python 2.3.3 (#2, May 1 2004, 06:12:12)
[GCC 3.3.3 (Debian 20040401)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> print os.path.abspath("./")
/home/fritz
>>>
Dookie