Hey,
Nehmen wir an, ich hab einen Arbeitsordner "Projekt 1". In diesem Ordner befinden sich eine Script "Start.py" und ein Unterordner "lib". Nun möchte ich in mein Script Start.py ein Script aus meiner lib einbinden, so als wäre der gesamte Code in meinem Start-Script und sollt dort auch so ausgeführt werden(auch Klassendefinitionen). Ich hab versucht in Google weiterzukommen, hat aber nichts genützt.
Kann mir jemand sagen, wie genau das geht?
Python-Scripts aus einem Unterordner in Script einbinden
- Defnull
- User
- Beiträge: 778
- Registriert: Donnerstag 18. Juni 2009, 22:09
- Wohnort: Göttingen
- Kontaktdaten:
Diese BadPractise aus PHP solltest du dir ganz schnell abgewöhnen In Python arbeitet man mit Modulen und hält seinen Adressraum schön sauber.
Wenn es gar nicht anders geht: "from lib.somescript import *"
Wenn es gar nicht anders geht: "from lib.somescript import *"
Bottle: Micro Web Framework + Development Blog
- cofi
- Python-Forum Veteran
- Beiträge: 4432
- Registriert: Sonntag 30. März 2008, 04:16
- Wohnort: RGFybXN0YWR0
Dazu sollte man aber sage, dass es _immer_ anders geht, wenn nicht hat man mit Sicherheit einen Designfehler.Defnull hat geschrieben:Wenn es gar nicht anders geht: "from lib.somescript import *"
Da sich Pakete in Python3 nicht geaendert haben, gibts die Doku sogar uebersetzt: http://tutorial.pocoo.org/modules.html#pakete
Englisch (Python2.6): http://docs.python.org/tutorial/modules.html#packages
Michael Markert ❖ PEP 8 Übersetzung ❖ Tutorial Übersetzung (3.x) ⇒ Online-Version (Python 3.3) ❖ Deutscher Python-Insider ❖ Projekte
Tut mir Leid, ich hab garnichts verstanden, und ich weiß auch nicht, was das, was ihr gepostet habt, mit dem zu tun hat, was ich meine.
Eigentlich hat das, was ich suche, nur den Sinn, dass ich nicht den ganzen Code in ein Script packen will, das spart nämlich die Zeit, nach irgendwelchen bestimmten Stellen zu suchen und macht es viel übersichtlicher. Also fänd ich es geschickt, wenn ich zum beispiel eine große Klasse in einer .py Datei abspeichern und diese dann ganz einfach mit einem Befehl in mein Script einbinden könnte.
Bei Ruby ist das ja auch kein Problem
nach sowas hatte ich eher gesucht.
Eigentlich hat das, was ich suche, nur den Sinn, dass ich nicht den ganzen Code in ein Script packen will, das spart nämlich die Zeit, nach irgendwelchen bestimmten Stellen zu suchen und macht es viel übersichtlicher. Also fänd ich es geschickt, wenn ich zum beispiel eine große Klasse in einer .py Datei abspeichern und diese dann ganz einfach mit einem Befehl in mein Script einbinden könnte.
Bei Ruby ist das ja auch kein Problem
Code: Alles auswählen
require 'lib/MeineKlasse.rb'
include MeineKlasse
- cofi
- Python-Forum Veteran
- Beiträge: 4432
- Registriert: Sonntag 30. März 2008, 04:16
- Wohnort: RGFybXN0YWR0
Und genau das hat Python nicht.
Du solltest vielleicht den ganzen Abschnitt ueber Module im Tutorial lesen.
Die Kurzform ist, dass du Code in Modulen und in Paketen verwalten kannst.
Willst du an deinem ``lib`` Vorhaben festhalten, musst du ``lib`` zu einem Paket machen und kannst dann ueber ``import lib.MyModule`` auf lib/MyModule.py zugreifen an ``MeineKlasse`` kommst du ueber ``lib.MyModule.MeineKlasse``
Versuche nicht eine andere Sprache in Python-Syntax zu packen, das funktioniert nicht. Jedenfalls nicht lesbar und schon gar nicht einfach.
Du solltest vielleicht den ganzen Abschnitt ueber Module im Tutorial lesen.
Die Kurzform ist, dass du Code in Modulen und in Paketen verwalten kannst.
Willst du an deinem ``lib`` Vorhaben festhalten, musst du ``lib`` zu einem Paket machen und kannst dann ueber ``import lib.MyModule`` auf lib/MyModule.py zugreifen an ``MeineKlasse`` kommst du ueber ``lib.MyModule.MeineKlasse``
Versuche nicht eine andere Sprache in Python-Syntax zu packen, das funktioniert nicht. Jedenfalls nicht lesbar und schon gar nicht einfach.
Michael Markert ❖ PEP 8 Übersetzung ❖ Tutorial Übersetzung (3.x) ⇒ Online-Version (Python 3.3) ❖ Deutscher Python-Insider ❖ Projekte
Du könntest sowas einfach mit:require 'lib/MeineKlasse.rb'
include MeineKlasse
Code: Alles auswählen
execfile("lib/MeineKlasse.py")