Seite 1 von 1

Variabler import gesucht

Verfasst: Dienstag 27. November 2007, 16:56
von boney
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

Verfasst: Dienstag 27. November 2007, 17:00
von Leonidas
`$PYTHONPATH` bzw. `%PYTHONPATH%` in der Batch-Datei verändern, bevor du den Interpreter aufrufst.

Verfasst: Dienstag 27. November 2007, 17:06
von boney
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.

Verfasst: Dienstag 27. November 2007, 17:20
von Leonidas
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?

Verfasst: Dienstag 27. November 2007, 17:23
von boney
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

Verfasst: Dienstag 27. November 2007, 17:38
von Leonidas
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?

Verfasst: Dienstag 27. November 2007, 17:43
von boney
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....

Verfasst: Dienstag 27. November 2007, 17:59
von EyDu
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:

Verfasst: Dienstag 27. November 2007, 18:02
von Leonidas
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).

Verfasst: Dienstag 27. November 2007, 18:51
von gerold
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: Alles auswählen

SET PYTHONPATH=C:\Programme\python25\Lib\site-packages\
C:\Programme\python25\python.exe
lg
Gerold
:-)

Re: Variabler import gesucht

Verfasst: Dienstag 27. November 2007, 19:03
von gerold
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
:-)

Verfasst: Dienstag 27. November 2007, 23:39
von boney
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

Verfasst: Mittwoch 28. November 2007, 08:28
von gerold
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
:-)

Verfasst: Mittwoch 28. November 2007, 10:39
von Leonidas
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.

Verfasst: Mittwoch 28. November 2007, 15:57
von HWK
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

Verfasst: Mittwoch 28. November 2007, 17:41
von boney
So, wie es scheint liegt es an meiner eigenen Dummheit. Bin immer noch nicht "vor Ort". Aber ich denke ich bin (fast) selbst schuld.
Ich schreibe noch wie es ausgegangen ist. Auch wenn's peinlich für mich werden kann :oops: :roll:

Gruß
Boney