sys.path.append()

Probleme bei der Installation?
Antworten
GunnarS
User
Beiträge: 6
Registriert: Dienstag 22. März 2005, 14:17

Hallo,

ich versuche gerade, unter Windows und python2.3.5, den path zu erweitern.
Über die Kommandozeile gebe ich folgendes ein:

Code: Alles auswählen

import sys
sys.path.append('Pfad-Angabe')
Wenn ich mir danach den path ausgeben lasse, ist alles ok.
Sobald ich dann die python Konsole beende, wieder neu öffne und mir den path ausgeben lasse, ist meine Ergänzung weg...
Was mache ich falsch?`

Gruss
Gunnar
querdenker
User
Beiträge: 424
Registriert: Montag 28. Juli 2003, 16:19
Wohnort: /dev/reality

Hallo Gunnar,

die Anweisung

Code: Alles auswählen

sys.path.append('pfad/zu/irgend/was')
ist nur zur Laufzeit des Scriptes / Programmes gültig, in dem sie steht.

Macht in meinen Augen auch Sinn, da man dadurch explizit steuern kann, was man importieren kann, beziehungsweise soll.

Ich habe z.B für meine Sachen als erstes immer folgendes stehen:

Code: Alles auswählen

#-*- coding: iso-8859-1 -*-
#std-imports
import os
import sys
sys.path.append(os.getcwd())
#own imports
import mymod1
...

#code start
mfg, querdenker
GunnarS
User
Beiträge: 6
Registriert: Dienstag 22. März 2005, 14:17

Hallo Querdenker,

ich habe festgestellt, dass ich unter Windows eine Umgebungsvariable "PYTHONPATH" anlegen muss, diese enthält dann den Pfad zu meinem zipFile. Das funktioniert soweit auch. Wenn ich in der python Shell mir den sys.path ausgeben lasse, ist der Pfad zu dem Zipfile enthalten.

In dem Zipfile sind Module enthalten.
Beim Erstellen einer Exe meint py2exe, dass die Module, die in dem Zipfile sind, fehlen würden...
Kann py2exe die nicht in einem zipfile finden?

Gruß
Gunnar
querdenker
User
Beiträge: 424
Registriert: Montag 28. Juli 2003, 16:19
Wohnort: /dev/reality

Ich kann mir nicht vorstellen, das py2exe oder die zugrunde liegenden distutils dazu gedacht sind, zipfiles auszupacken.

Der Sinn und Zweck dieser Tools ist es doch eher, eine Möglichkeit zu schaffen mit der man Programme verteilen kann.
Eigentlich alle Programme / Erweiterungen kann man sich als zip / tar.gz herunterladen und danach mit einem

Code: Alles auswählen

python setup.py install
installieren.

mfg, querdenker
(der sich fragt, warum Gunnar das Pferd von hinten aufzäumt :wink: )
GunnarS
User
Beiträge: 6
Registriert: Dienstag 22. März 2005, 14:17

Ich zäume nix von hinten auf :)

Ich beschreibe das Problem mal genauer.
Es gibt eine zip Datei, die enthält python Module, die von einem Python Script verwendet werden.
Wie Du weisst, soll ich aus dem Klumpen Python eine exe erstellen.
So, die Aufgabe war nun, py2exe dazu zu bringen, die notwendigen Module auch aus diesem ZipFile zu finden, was es aber nicht tut.
Entpacke ich die Module aus dem Zipfile in ein Verzeichnis, das im PYTHONPATH drin steht, findet py2exe sie.
Grund dafür war, das sich der Inhalt des zip File ändern kann und es wenn möglich nicht ausgepackt werden soll, da der Buildprozess automatisch ablaufen soll (per cmd datei)

Gruss
Gunnar
querdenker
User
Beiträge: 424
Registriert: Montag 28. Juli 2003, 16:19
Wohnort: /dev/reality

Hey!
schau dir mal das hier an:
zipimport


mfg, querdenker
fs111
User
Beiträge: 170
Registriert: Samstag 15. November 2003, 11:42
Kontaktdaten:

querdenker hat geschrieben:
Ich habe z.B für meine Sachen als erstes immer folgendes stehen:

Code: Alles auswählen

#-*- coding: iso-8859-1 -*-
#std-imports
import os
import sys
sys.path.append(os.getcwd())
#own imports
import mymod1
...

#code start
mfg, querdenker
Wozu soll das denn gut sein, das Verzeichnis in dem das Skript liegt ist immer automatisch mit im path, das kannst Du Dir also sparen.

fs111
Pydoc-Integration in vim - Feedback willkommen: http://www.vim.org/scripts/script.php?script_id=910
querdenker
User
Beiträge: 424
Registriert: Montag 28. Juli 2003, 16:19
Wohnort: /dev/reality

fs111 hat geschrieben: Wozu soll das denn gut sein, das Verzeichnis in dem das Skript liegt ist immer automatisch mit im path, das kannst Du Dir also sparen.
Template? Schlechte Angewohnheit? :wink:

Das kam von Fehlermeldungen, die sinngemäß lauteten "kann nicht importieren, weil nicht da".
War aber da, im gleichen Verzeichnis :?:

mfg, querdenker
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Hallo!

Falls es jemanden interessiert. Es gibt noch eine Möglichkeit, den Python-Path zu setzen.

Die Datei "site-packages\sitecustomize.py" wird nach dem Initialisieren ausgeführt. Wenn sie nicht existiert wird sie ignoriert. So sieht sie bei mir aus:

Code: Alles auswählen

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
import sys
sys.path.append(r"P:\DevPy\modules")
Das hat den Vorteil, dass man nicht nur den Pfad ändern, sondern auch andere Aktionen ausführen lassen kann.

Details: http://docs.python.org/lib/module-site.html

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Antworten