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.
Antworten
boney
User
Beiträge: 22
Registriert: Dienstag 20. November 2007, 15:00

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
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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

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.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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 (former) Modvoice
boney
User
Beiträge: 22
Registriert: Dienstag 20. November 2007, 15:00

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
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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 (former) Modvoice
boney
User
Beiträge: 22
Registriert: Dienstag 20. November 2007, 15:00

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: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

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:
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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 (former) Modvoice
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

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
:-)
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: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

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

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: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

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.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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 (former) Modvoice
Benutzeravatar
HWK
User
Beiträge: 1295
Registriert: Mittwoch 7. Juni 2006, 20:44

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
boney
User
Beiträge: 22
Registriert: Dienstag 20. November 2007, 15:00

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
Antworten