Variabler import gesucht

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
boney
User
Beiträge: 22
Registriert: Dienstag 20. November 2007, 15:00

Variabler import gesucht

Beitragvon boney » Dienstag 27. November 2007, 16:56

Hiho!

Ich entwickle ein Skript das auf vielen PCs laufen können soll. Es hängt von verschiedenen installierten Programmen ab. Um eine schnelle Wartbarkeit zu gewährleisten wird das Programm über eine .bat per "python ....." aufgerufen.
Jetzt hab ich aber ein kleines Problem. Ich entwickeln mit Eclipse und pydev. Dort hab ich die ganzen Pfade zum python-install-directory drin. Wenn ich jetzt aber das Programm über die Batch aufrufe, so findet er manche Module nicht z.B. pysvn welches im Python-install-dir liegt.
Kann man das irgendwie "variabel" einbinden?

Mein Versuch sah so aus: Ich hab hier im Forum ein kleines Skript gefunden was einem die installierten Pythonversionen anzeigt und den das install-dir ausspuckt. Die füg ich dann der sys.path hinzu. Aber das erfüllt nicht die Erfordernisse:

Code: Alles auswählen

versions = installed_python_versions.get_python_versions()

for version in versions:
    path = os.path.normpath(os.path.join(installed_python_versions.get_python_path(version), "//Lib//site-packages"))
    sys.path.append(path.encode('ascii'))

import pysvn
Das ist schon ein ziemliches Gefrickel. Hat da jemand ne bessere Idee? Oder ne einfachere Lösung. Wie ich mein "Glück" kenne gibt's da bestimmt eine python-eigene Funktion für und ich hab sie nicht gefunden......

Vielen Dank für euren Hirnschmalz!

Greetz
boney
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Dienstag 27. November 2007, 17:00

`$PYTHONPATH` bzw. `%PYTHONPATH%` in der Batch-Datei verändern, bevor du den Interpreter aufrufst.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
boney
User
Beiträge: 22
Registriert: Dienstag 20. November 2007, 15:00

Beitragvon boney » Dienstag 27. November 2007, 17:06

Ja, das hatte ich auch schon überlegt. Ist die Notlösung, wenn nix anderes mehr geht.
Hab gedacht vll geht das in Python vll irgendwie "einfacher". Falls Python halt nicht unter dem "Standartpfad" installiert ist.
Zuletzt geändert von boney am Dienstag 27. November 2007, 17:21, insgesamt 2-mal geändert.
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Dienstag 27. November 2007, 17:20

In wiefern ist das eine Notlösung?
Warum hast du `pysvn` eigentlich nicht da wo es sein sollte, in `site-packages`? Würde es dir helfen, eine `.pth`-Datei zu verwenden?
My god, it's full of CARs! | Leonidasvoice vs Modvoice
boney
User
Beiträge: 22
Registriert: Dienstag 20. November 2007, 15:00

Beitragvon boney » Dienstag 27. November 2007, 17:23

Hatte grad mein 2. Posting editiert. Aber weil du so schnell warst :) pack ich das hier mit rein.
Ich hab pysvn ganz normal installiert unter den site-packages. Ich weiß auch nicht, warum er sich nicht das Zeug da raus nimmt.... Woran kann das liegen? Das müßte er doch default-mäßig machen.

Hier noch mein EDIT:
Ich hab das mal probiert mit dem %PYTHONPATH% aber da tut sich nicht viel:

Code: Alles auswählen

set PYTHON=C:\Programme\python25\Lib\site-packages
set PYTHONPATH = %PYTHONPATH%;%PYTHON%
Ich nehm mal an Python holt sich das Zeug aus dem Pythonpath? Aber er bringt mir trotzdem noch den Fehler:

Code: Alles auswählen

Import Error: No module named pysvn
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Dienstag 27. November 2007, 17:38

Du bist sicher, dass es das richtige Python mit dem richtigen `site-packages` ist? Nicht dass du Python 2.4 mit dem `site-packages` von 2.5 zu betreiben versuchst - sowas kann schon mal vorkommen.

Wenn du `python` einfach so, mit angepasstem `PYTHONPATH` aufrufst, was steht in `sys.path` drinnen` Ist ein `import pysvn` möglich?
My god, it's full of CARs! | Leonidasvoice vs Modvoice
boney
User
Beiträge: 22
Registriert: Dienstag 20. November 2007, 15:00

Beitragvon boney » Dienstag 27. November 2007, 17:43

Hi Leonidas!

Ich hab hier nur python2.5 drauf. Da war auch noch nie ne ältere Version drauf. Wenn ich das mit %PYTHONPATH% vornedran aufruf, dann ist sys.path erstaunlicherweise leer. Komisch........ Woher kommt das dann? Strange....
EyDu
User
Beiträge: 4866
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Beitragvon EyDu » Dienstag 27. November 2007, 17:59

boney hat geschrieben:Ich hab hier nur python2.5 drauf. Da war auch noch nie ne ältere Version drauf.

Das dachte ich bei einem Rechner auch mal, bis ich dann irgendwann festgestellt hatte, dass OpenOffice installiert war :roll:
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Dienstag 27. November 2007, 18:02

Versuch mal `PYTHONPATH=C:\Programme\python25\Lib\site-packages\ python` (bin mir jetzt nicht 100% sicher, ob das unter Windows so geht, aber zur Not kannst du versuchen Anführungszeichen zu verwenden sowie \\ um \ zu escapen).
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5554
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Telfs (Tirol)
Kontaktdaten:

Beitragvon gerold » Dienstag 27. November 2007, 18:51

Leonidas hat geschrieben:Versuch mal `PYTHONPATH=C:\Programme\python25\Lib\site-packages\ python` (bin mir jetzt nicht 100% sicher, ob das unter Windows so geht, aber zur Not kannst du versuchen Anführungszeichen zu verwenden sowie \\ um \ zu escapen).

Hallo Leonidas!

Unter Windows funktioniert das leider nicht. Dort muss man so vorgehen:
[code=]SET PYTHONPATH=C:\Programme\python25\Lib\site-packages\
C:\Programme\python25\python.exe[/code]
lg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5554
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Telfs (Tirol)
Kontaktdaten:

Re: Variabler import gesucht

Beitragvon gerold » Dienstag 27. November 2007, 19:03

boney hat geschrieben:findet er manche Module nicht z.B. pysvn welches im Python-install-dir liegt.
Kann man das irgendwie "variabel" einbinden?

Hallo boney!

- Welches Betriebssystem?
- Wo genau ist das Python (bei Windows: python.exe) mit dem du arbeitest?
- Wo genau wurde "pysvn" installiert?
- Wo genau wurden die anderen Module installiert, von denen dein Programm abhängt?

Diese Befehle geben ziemlich gut über die Umgebung Auskunft:

Code: Alles auswählen

sys.executable
sys.path
sys.exec_prefix
sys.modules


Falls Windows:
Im "regedit" gibt der Schlüssel "HKEY_LOCAL_MACHINE\SOFTWARE\Python\PythonCore" auskunft über die beim Installieren registrierten Python-Versionen.

EDIT:

Aber das lenkt jetzt schon fast zu viel ab. Beantworte bitte lieber zuerst die oben genannten Fragen.

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs

Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
boney
User
Beiträge: 22
Registriert: Dienstag 20. November 2007, 15:00

Beitragvon boney » Dienstag 27. November 2007, 23:39

Hallo Gerold!

- Win XP SP2
- C:\Programme\python25\python.exe
- Bin grade nicht "vor Ort". Müßte aber C:\Programme\python25\Lib\site-packages\pysvn sein. "Da wo's der Installer halt hinpackt"
- Das ist dann nur noch os und meine eigenen die im selben Verzeichnis liegen wie das Skript.

Mit den Umgebungsvariablen kann ich grade nicht dienen, da ich grade wie gesagt nicht vor Ort bin.

Zur Bonusfrage ;): Der spuckt nur die 2.5er aus. Das hatte ich vorher schonmal ausprobiert mit einer Funktion die hier im Forum unterwegs ist (ist die vll von dir? ;) )

Gruß
boney
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5554
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Telfs (Tirol)
Kontaktdaten:

Beitragvon gerold » Mittwoch 28. November 2007, 08:28

boney hat geschrieben:- Bin grade nicht "vor Ort". Müßte aber C:\Programme\python25\Lib\site-packages\pysvn sein. "Da wo's der Installer halt hinpackt"

Hallo boney!

Dann warte ich mit weiteren Gedanken darüber, bis das fix ist.

Es ist nur komisch, dass solche Probleme immer nur dann auftreten, wenn Python statt nach *C:\python25* nach *C:\Programme\python25* installiert wurde. :K

In der Regel, rate ich dann früher oder später zur kompletten Neuinstallation von Python und den Zusatzmodulen nach *C:\python25* und anschließedem Anpassen der Umgebungsvariable PATH. PYTHONPATH habe ich noch nie gebraucht.

Ach noch was. Es kann dir auch eine falsch angepasste "sitecustomize.py" Probleme bereiten.

Aber mal sehen, wo die Module installiert wurden und was

Code: Alles auswählen

sys.executable
sys.path
sys.exec_prefix

so ausspuckt.

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs

Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Mittwoch 28. November 2007, 10:39

gerold hat geschrieben:Es ist nur komisch, dass solche Probleme immer nur dann auftreten, wenn Python statt nach *C:\python25* nach *C:\Programme\python25* installiert wurde. :K

Ich hatte nie Probleme, Python in `C:\Programme\Python` zu installieren. Mit gar keinen Modulen.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Benutzeravatar
HWK
User
Beiträge: 1295
Registriert: Mittwoch 7. Juni 2006, 20:44

Beitragvon HWK » Mittwoch 28. November 2007, 15:57

Leonidas hat geschrieben:
gerold hat geschrieben:Es ist nur komisch, dass solche Probleme immer nur dann auftreten, wenn Python statt nach *C:\python25* nach *C:\Programme\python25* installiert wurde. :K

Ich hatte nie Probleme, Python in `C:\Programme\Python` zu installieren. Mit gar keinen Modulen.
Kann ich nur bestätigen.
MfG
HWK

Wer ist online?

Mitglieder in diesem Forum: Bing [Bot], WhiteyW