Hi Python-Freaks,
ich bin neu im Forum und auch neu bei Python. Ich habe mir das Buch "Python für Kids" gekauft. Das geht auch soweit klar. Nur ist mal wieder alles ausschließlich für Windows erklärt. Ich benutze Suse-Linux 11.1.
Ich möchte erstellte Definitionen über eine import-Anweisung benutzen. Die kann man ja unter einem beliebigen Dateinamen abspeichern. Ich weiß nur nicht, wie ich diese Datei in den Suchpfad von Python bekomme. Eine sitecustomize.py existiert bei mir nicht. Wenn ich sie, wie im Buch vorgeschlagen, selbst erstelle, weiß ich allerdings nicht, wo ich sie abspeichern soll.
Gibt es bei Euch Linux-User die mir da helfen können.
Vielen Dank!
Gärchle
Dateien für "import-Anweisung" selbst erstellen un
- cofi
- Python-Forum Veteran
- Beiträge: 4432
- Registriert: Sonntag 30. März 2008, 04:16
- Wohnort: RGFybXN0YWR0
Code: Alles auswählen
python -c 'import sys; print sys.path'
Aber: Du musst Python-Skripte nicht im Suchpfad installieren. Willst du dein Modul aus einem anderen nutzen, reicht es, wenn die beiden im selben Ordner liegen.
Willst du dein Modul systemweit verfuegbar machen, dann schieb es in ``/usr/lib/python$Version/site-packages``
Daneben gibts noch das Modul ``virtualenv``, aber das geht glaube ich ein bisschen zu weit.
Michael Markert ❖ PEP 8 Übersetzung ❖ Tutorial Übersetzung (3.x) ⇒ Online-Version (Python 3.3) ❖ Deutscher Python-Insider ❖ Projekte
Hallo Cofi,
schonmal Danke.
Leider funktioniert es irgendwie nicht.
Kann es sein, dass in der Datei, deren Funktionen ich importieren will, irgendwas Spezielles drinstehen muss?
Ich arbeite mit IDLE und da steht immer drin "ImportError: cannot import name n_eck", wenn ich z.B. die Funktion" n_eck" mit "from mytools import n_eck" aufrufen will.
Gruß
Gärchle
schonmal Danke.
Leider funktioniert es irgendwie nicht.
Kann es sein, dass in der Datei, deren Funktionen ich importieren will, irgendwas Spezielles drinstehen muss?
Ich arbeite mit IDLE und da steht immer drin "ImportError: cannot import name n_eck", wenn ich z.B. die Funktion" n_eck" mit "from mytools import n_eck" aufrufen will.
Gruß
Gärchle
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Es wäre sicherlich hilfreich zu wissen, welche Variante Du nun umgesetzt hast. Denn ja nach Umsetzung könnten andere Fehler da reinspielen.gärchle hat geschrieben: Leider funktioniert es irgendwie nicht.
Und: Vergiss doch idle! Nutze doch die normale Python-Shell oder iPython... imho komfortabler als idle.
- cofi
- Python-Forum Veteran
- Beiträge: 4432
- Registriert: Sonntag 30. März 2008, 04:16
- Wohnort: RGFybXN0YWR0
Richtig. Beschreibe doch mal wie du das Skript ausfuehrst, wie das Verzeichnis des Skriptes aussieht und was in der ``mytools.py`` steht.
Was man zu IDLE erwaehnen sollte ist, dass es ein gewisses Gedaechtnis hat und das des oefteren Probleme macht. Zum Starten der Programme ist die Konsole zu bevorzugen.
Was man zu IDLE erwaehnen sollte ist, dass es ein gewisses Gedaechtnis hat und das des oefteren Probleme macht. Zum Starten der Programme ist die Konsole zu bevorzugen.
Michael Markert ❖ PEP 8 Übersetzung ❖ Tutorial Übersetzung (3.x) ⇒ Online-Version (Python 3.3) ❖ Deutscher Python-Insider ❖ Projekte
Das gilt aber auch nur unter Linux... Unter Windows fühlen sich beide Alternativen sehr fremd an.Vergiss doch idle! Nutze doch die normale Python-Shell oder iPython... imho komfortabler als idle.
EDIT: Ich seh grad, hier benutzt der OP tatsächlich Linux...
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Findest Du wirklich? Worin unterscheiden sie sich denn zur Linux-Variante? Mir ist da bisher nichts gravierendes aufgefallen...HerrHagen hat geschrieben:Das gilt aber auch nur unter Linux... Unter Windows fühlen sich beide Alternativen sehr fremd an.Vergiss doch idle! Nutze doch die normale Python-Shell oder iPython... imho komfortabler als idle.
Also ich habe beide Varianten ausprobiert:
Einmal denselben Ordner benutzt, in dem ich auch meine Programme abspeichere. Das ist im Home-Verzeichnis. In diesem Ordner habe ich den Ordner mylib erstellt und darin die Datei mytools.py abgespeichert.
In der Datei mytools.py sind z.B. solche Definitionen:
def n_eck (eckenzahl, seitenlaenge):
drehwinkel = 360.0 / eckenzahl
for i in range (eckenzahl):
fd (seitenlaenge)
lt (drehwinkel)
Dann habe ich auch die Variante ausprobiert den Ordner mylib mit der Datei mytools.py unter /usr/lib/python$Version/site-packages`` abzuspeichern.
Hat leider auch nicht funktioniert.
Da ich mit dem besagten Buch Python lerne, habe ich mit der Konsole keine Erfahrung und natürlich auch keine Hilfestellung.
Gibt es eine Python relevante Befehlsübersicht für die Konsole?
Gruß
Gärchle
Einmal denselben Ordner benutzt, in dem ich auch meine Programme abspeichere. Das ist im Home-Verzeichnis. In diesem Ordner habe ich den Ordner mylib erstellt und darin die Datei mytools.py abgespeichert.
In der Datei mytools.py sind z.B. solche Definitionen:
def n_eck (eckenzahl, seitenlaenge):
drehwinkel = 360.0 / eckenzahl
for i in range (eckenzahl):
fd (seitenlaenge)
lt (drehwinkel)
Dann habe ich auch die Variante ausprobiert den Ordner mylib mit der Datei mytools.py unter /usr/lib/python$Version/site-packages`` abzuspeichern.
Hat leider auch nicht funktioniert.
Da ich mit dem besagten Buch Python lerne, habe ich mit der Konsole keine Erfahrung und natürlich auch keine Hilfestellung.
Gibt es eine Python relevante Befehlsübersicht für die Konsole?
Gruß
Gärchle
- cofi
- Python-Forum Veteran
- Beiträge: 4432
- Registriert: Sonntag 30. März 2008, 04:16
- Wohnort: RGFybXN0YWR0
Fuer Code gibt es [code][/code] Tags.
Schau dir mal den Abschnitt ueber Module im Tutorial an.
``python --help`` sollte dir alles erzaehlen.
Das wichtigste ist aber:
``python skript.py`` -> skript.py wird ausgefuerht.
``python`` -> Start des interaktiven Interpreters.
Schau dir mal den Abschnitt ueber Module im Tutorial an.
``python --help`` sollte dir alles erzaehlen.
Das wichtigste ist aber:
``python skript.py`` -> skript.py wird ausgefuerht.
``python`` -> Start des interaktiven Interpreters.
Michael Markert ❖ PEP 8 Übersetzung ❖ Tutorial Übersetzung (3.x) ⇒ Online-Version (Python 3.3) ❖ Deutscher Python-Insider ❖ Projekte
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Kein Wunder, dass es nicht klappt, wenn Du folgende Struktur verwendest:
Wenn Du nun in mein_script.py mytools importieren willst, musst Du schon entweder mytools.py aus dem mylib Ordner zurück in das home Verzeichnis kopieren, oder aber den Ordner mylib zu einem Modul machen. Dazu kannst Du eine (leere) __init__.py im Ordner mylib erstellen. Danach kannst Du dann folgenden import schreiben in der mein_script.py
Die __init__.py kann man in der Shell ganz einfach per
erstellen. Das geht recht schnell im Vgl. zum Speichern einer leeren Datei aus einem Texteditor o.ä.
Code: Alles auswählen
home
+mylib
mytools.py
mein_script.py
Code: Alles auswählen
import mylib
# jetzt die Hierarchie beachten:
print mylib.mytools.drehwinkel
# oder
from mylib import mytools
print mytools.drehwinkel
Code: Alles auswählen
touch mylib/__init__.py
gibt es denn nicht so ne Art sitecostumize.py wie in Python2.2.2?
in die hat man einfach den Pfad zur Lib hinzugefügt und dann konnt alles importiert werden
in die hat man einfach den Pfad zur Lib hinzugefügt und dann konnt alles importiert werden
Dank an alle!
Ich habe jetzt die mytools.py im selben Ordner wie die Skripte. Außerdem arbeite ich jetzt mit der Konsole. Und siehe es funktioniert. Danke!
Ein kleiner Wermutstropfen: Ich arbeite in dem Buch viel mit dem turtle-Modul. Leider schließt das Fenster, das die Grafik anzeigt, sofort nach deren Fertigstellung. Kann man das ändern?
@Dav1d:
Nein, es gibt keine "sitecostumize.py" bei Linux.
Gruß
Gärchle
Ich habe jetzt die mytools.py im selben Ordner wie die Skripte. Außerdem arbeite ich jetzt mit der Konsole. Und siehe es funktioniert. Danke!
Ein kleiner Wermutstropfen: Ich arbeite in dem Buch viel mit dem turtle-Modul. Leider schließt das Fenster, das die Grafik anzeigt, sofort nach deren Fertigstellung. Kann man das ändern?
@Dav1d:
Nein, es gibt keine "sitecostumize.py" bei Linux.
Gruß
Gärchle
- cofi
- Python-Forum Veteran
- Beiträge: 4432
- Registriert: Sonntag 30. März 2008, 04:16
- Wohnort: RGFybXN0YWR0
Das Problem ist, dass du mit extra Ordnern ein Package benutzen musst. Hyperion hat das ja schon erklaert - allerdings ohne den Namen zu erwaehnen.gärchle hat geschrieben:Ich habe jetzt die mytools.py im selben Ordner wie die Skripte. Außerdem arbeite ich jetzt mit der Konsole. Und siehe es funktioniert. Danke!
Wie gesagt: Mehr dazu gibt es im Tutorial im Modul-Kapitel.
Das sollte allerdings nicht passieren, wenn du aus der Konsole startest. Zeig mal den Code, bei dem das passiert.gärchle hat geschrieben:Ein kleiner Wermutstropfen: Ich arbeite in dem Buch viel mit dem turtle-Modul. Leider schließt das Fenster, das die Grafik anzeigt, sofort nach deren Fertigstellung. Kann man das ändern?
Ist auch gar nicht noetig. Python bedient sich der PYTHONPATH-Umgebungsvariable.gärchle hat geschrieben:@Dav1d:
Nein, es gibt keine "sitecostumize.py" bei Linux.
Code: Alles auswählen
export PYTHONPATH='$PYTHONPATH:new_path'
Michael Markert ❖ PEP 8 Übersetzung ❖ Tutorial Übersetzung (3.x) ⇒ Online-Version (Python 3.3) ❖ Deutscher Python-Insider ❖ Projekte
Hallo
du musst deinem Skript als letzte Anweisung ein mit geben,also in etwas so
Siehe auch im Buch Seite 409 bzw 399
Gruß...busfahrer
du musst deinem Skript als letzte Anweisung ein
Code: Alles auswählen
mainloop()
Code: Alles auswählen
def haus(seite):
fd(seite)
rt(90)
fd(seite)
lt(120)
fd(seite)
lt(120)
fd(seite)
lt(75)
fd(seite * sqrt(2))
lt(135)
fd(seite)
lt(135)
fd(seite * sqrt(2))
lt(135)
fd(seite)
pu()
home()
hideturtle()
speed(1)
haus(100)
mainloop()
Gruß...busfahrer
Alles wird gut ;-)